💨

SPIREのクイックスタートをためす

2021/06/09に公開

Quickstart for Linux and MacOS Xに従って、macOS向けのSPIREのクイックスタートを試します。
SPIRE ServerおよびSPIRE Agentについては、「SPIFFEとその実装であるSPIREについて」に図と併せてわかりやすく記載されています。

Installing SPIRE (Building SPIRE on macOS/Darwin)

SPIREリポジトリをクローンし、spireディレクトリに移動してspire-serverおよびspire-agentをビルドする。

$ git clone --single-branch --branch v0.12.3 https://github.com/spiffe/spire.git
$ cd spire
$ go build ./cmd/spire-server 
$ go build ./cmd/spire-agent

spireディレクトリにバイナリが生成されている。この参照しているドキュメントではbinディレクトリ作成し、生成されたバイナリファイルを配置する。

$ mkdir bin
$ mv spire-server spire-agent bin

Starting the SPIRE Server

SPIRE Serverを起動する。SPIRE ServerはIDを管理及び発行する。

$ bin/spire-server run -config conf/server/server.conf &

SPIRE Serverが起動していることは以下のコマンドで確認することができる。

$ bin/spire-server healthcheck
Server is healthy.

Creating a join token to attest the agent to the server

JoinTokenはAgentの証明方法のひとつである。JoinTokenはSPIREサーバーに対してSPIRE Agentを証明(認証)するワンタイムで事前共有のトークンを発行する。

$ bin/spire-server token generate -spiffeID spiffe://example.org/myagent
Token: fb0d5afe-c575-4791-99a3-06b802594f07

JoinToken以外の証明方法としては、AWS/GCP Instance Identity TokenやX.509証明書などが含まれる。

Starting the SPIRE Agent

SPIRE AgentはSPIRE Serverにクエリを実行し、NodeとWorkloadを証明(認証)する。前の手順で生成したトークンを使用してAgentをスタートすることで証明することができる。

$ bin/spire-agent run -config conf/agent/agent.conf -joinToken fb0d5afe-c575-4791-99a3-06b802594f07 &

SPIRE Agentが起動していることは以下のコマンドで確認することができる。

$ bin/spire-agent healthcheck
Agent is healthy.

Create a registration policy for your workload

SPIREがWorkloadを識別するには、Registration Entryを介してWorkloadをSPIREサーバーに登録する必要がある。Workloadの登録は、Workloadの識別方法およびSPIFFE IDをSPIREに指定する。

$ bin/spire-server entry create -parentID spiffe://example.org/myagent -spiffeID spiffe://example.org/myservice -selector unix:uid:$(id -u)
Entry ID         : 49bdfb6e-ac7f-4a0e-8ce5-5b7984b7f3c8
SPIFFE ID        : spiffe://example.org/myservice
Parent ID        : spiffe://example.org/myagent
Revision         : 0
TTL              : default
Selector         : unix:uid:501

Retrieve and view a x509-SVID

WorkloadがAgentからX.509 SVIDを取得するために必要なプロセスを実行する。X.509 SVIDは、Workloadが別のWorkloadを認証するために使用できる。X.509 SVIDを取得して/tmp/以下に書き込むためには以下のコマンドを実行する。

$ bin/spire-agent api fetch x509 -write /tmp/
Received 1 svid after 272.216898ms

SPIFFE ID:		spiffe://example.org/myservice
SVID Valid After:	2021-06-08 15:24:23 +0000 UTC
SVID Valid Until:	2021-06-08 16:24:33 +0000 UTC
Intermediate #1 Valid After:	2021-06-08 15:12:20 +0000 UTC
Intermediate #1 Valid Until:	2021-06-09 15:12:30 +0000 UTC
CA #1 Valid After:	2018-05-13 19:33:47 +0000 UTC
CA #1 Valid Until:	2023-05-12 19:33:47 +0000 UTC

Writing SVID #0 to file /tmp/svid.0.pem.
Writing key #0 to file /tmp/svid.0.key.
Writing bundle #0 to file /tmp/bundle.0.pem.

以下のようにopensslコマンドを実行して、SVIDの内容を表示することができる。

$ openssl x509 -in /tmp/svid.0.pem -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            6d:6a:0f:cf:0d:ca:b7:2a:0d:97:35:0a:6e:fe:84:e9
    Signature Algorithm: ecdsa-with-SHA256
        Issuer: C=US, O=SPIFFE
        Validity
            Not Before: Jun  8 15:24:23 2021 GMT
            Not After : Jun  8 16:24:33 2021 GMT
        Subject: C=US, O=SPIRE
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:8e:4b:38:c3:52:e0:89:6f:60:4d:27:87:c3:1d:
                    d8:54:fe:18:cb:59:98:11:eb:c2:00:21:fb:4a:92:
                    48:8c:44:c9:87:e8:de:98:f9:19:a4:92:3e:46:24:
                    0f:f0:b9:c8:46:2d:71:dd:a7:e8:70:aa:03:59:56:
                    b3:a1:2d:d6:4e
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment, Key Agreement
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Subject Key Identifier:
                50:3E:80:17:4C:4E:88:CE:B5:A8:01:D4:0A:26:80:DC:5D:C7:50:47
            X509v3 Authority Key Identifier:
                keyid:4E:FF:04:A5:50:6F:BC:7F:05:93:B7:EC:79:74:60:3C:FD:9F:F8:24

            X509v3 Subject Alternative Name:
                URI:spiffe://example.org/myservice
    Signature Algorithm: ecdsa-with-SHA256
         30:46:02:21:00:f7:fa:9e:14:fe:1d:40:6a:90:1a:01:ab:74:
         80:ff:5c:68:3b:04:be:f2:73:3f:02:f3:af:05:83:97:65:27:
         34:02:21:00:86:85:9a:e3:28:f0:46:64:7e:76:91:66:0f:ac:
         5c:5e:c5:3e:e4:cc:b9:c8:a2:63:30:08:67:cf:92:7f:e4:7e

References

GitHubで編集を提案

Discussion