テックカリキュラム

SPIRE × AWS IAM統合 ── KubernetesとAWSをつなぐゼロトラストID基盤の実装はじめに

SPIRE × AWS IAM統合 ── KubernetesとAWSをつなぐゼロトラストID基盤の実装はじめに

マルチクラウド・マルチクラスタ環境では、Kubernetes(SPIFFE ID)とAWS IAM(ロール)が別々に管理されることが多く、統合されたアイデンティティ管理が課題になります。

この課題を解決するのが、SPIREとAWS IAMの統合です。

  • Kubernetes → SPIFFE ID
  • AWS → IAM Role

これらを連携することで、Pod単位でAWSリソースに安全にアクセスできるようになります。


1. アーキテクチャ概要

Pod(SPIFFE ID) 
↓
SPIRE Agent 
↓ 
SPIRE Server 
↓ 
OIDC / STS 
↓ 
AWS IAM Role 
↓ 
S3 / DynamoDB / RDS 

SPIFFE IDを元に、一時的なAWS認証情報を取得します。


2. 実現方法のパターン

① OIDC Federation(推奨)

  • SPIREをOIDC Providerとして利用
  • AWS IAMで信頼関係を構築

② IAM Roles Anywhere

  • X.509証明書ベースで認証
  • SPIFFE証明書を活用可能

③ IRSA(比較用)

  • EKS専用(ServiceAccountベース)
  • SPIFFEより柔軟性が低い

3. OIDC Federation構成

① SPIREでOIDC Discovery有効化

spire-server { oidc_discovery_provider { issuer = "https://spire.example.org" } }

② AWSにOIDC Provider登録

aws iam create-open-id-connect-provider \ --url https://spire.example.org \ --client-id-list sts.amazonaws.com

4. IAMロールの信頼ポリシー

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::123456789012:oidc-provider/spire.example.org" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "spire.example.org:sub": "spiffe://example.org/ns/default/sa/my-app" } } } ] } 

SPIFFE IDとIAMロールを直接マッピングします。


5. Podからの認証フロー

 1. PodがSPIFFE ID取得 2. OIDCトークン発行 3. STSへリクエスト 4. 一時認証情報取得 

AWS CLI例

aws sts assume-role-with-web-identity \ --role-arn arn:aws:iam::123456789012:role/MyRole \ --web-identity-token token.jwt

6. IAM Roles Anywhereパターン

SPIFFEのX.509証明書をそのまま利用する方法です。

構成

 SPIFFE証明書 ↓ IAM Roles Anywhere ↓ AWS認証情報発行 

メリット

  • OIDC不要
  • X.509ベースでシンプル

7. セキュリティ設計ポイント

  • 短命トークン(数分〜数時間)
  • 最小権限IAMポリシー
  • Trust Domain分離

特にSPIFFE ID単位で権限制御することが重要です。


8. 実務構成例

 Kubernetes(SPIRE) ↓ OIDC Federation ↓ AWS IAM ↓ S3 / DynamoDB / Secrets Manager 
  • アプリ → S3アクセス
  • バッチ → DynamoDB操作

9. IRSAとの比較

項目IRSASPIRE
対応環境EKS限定マルチクラスタ対応
ID粒度ServiceAccountWorkload単位
柔軟性

10. ベストプラクティス

  • SPIFFE IDをIAMポリシーに直接マッピング
  • OIDC Federationを基本に設計
  • 証明書・トークンの自動ローテーション
  • CloudTrailで監査

まとめ

  • SPIREとAWS IAMを統合することでID管理を一本化
  • Pod単位で安全にAWSアクセスが可能
  • OIDC Federationが最も実用的
  • ゼロトラストの中核は「ID」

SPIRE × IAMは、Kubernetesとクラウドをつなぐ次世代の認証基盤です。