SPIREのクイックスタートをためす
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
Discussion