クラスターアクセス管理 - Amazon EKS

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

クラスターアクセス管理

Amazon EKS クラスターのセキュリティと整合性を維持するには、効果的なアクセス管理が不可欠です。このガイドでは、AWS IAM Identity Center (以前の AWS SSO) の使用に焦点を当て、EKS アクセス管理のさまざまなオプションについて説明します。さまざまなアプローチを比較し、そのトレードオフについて話し合い、既知の制限と考慮事項を強調します。

EKS アクセス管理オプション

注記

ConfigMap ベースのアクセス管理 (aws-auth ConfigMap) は廃止され、Cluster Access Management (CAM) API に置き換えられます。新しい EKS クラスターの場合は、CAM API を実装してクラスターアクセスを管理します。aws-auth ConfigMap を使用する既存のクラスターの場合は、CAM API を使用して に移行します。

オプション 1: クラスターアクセス管理 (CAM) API を使用する AWS IAM アイデンティティセンター

  • 一元化されたユーザーとアクセス許可の管理

  • 既存の ID プロバイダーとの統合 (Microsoft AD、Okta、PingId など)

  • CAM API はアクセスエントリを使用して、AWS IAM プリンシパル (ユーザーまたはロール) を EKS クラスターにリンクします。これらのエントリは IAM Identity Center のマネージド ID と連携するため、管理者は Identity Center で定義されたユーザーとグループのクラスターアクセスを制御できます。

EKS クラスター認証フロー:

EKS クラスター認証フロー
  1. プリンシパル (ヒューマンユーザー) または自動プロセスは、適切な AWS アカウントのアクセス許可を提示することで、AWS IAM を介して認証します。このステップでは、適切な AWS IAM プリンシパル (ロールまたはユーザー) にマッピングされます。

  2. 次に、EKS アクセスエントリは、Kubernetes アクセス許可のみを含む適切なアクセスポリシーを定義することで、この IAM プリンシパルを Kubernetes RBAC プリンシパル (ユーザーまたはグループ) にマッピングします。

  3. Kubernetes エンドユーザーがクラスターにアクセスしようとすると、その認証リクエストは aws-iam-authenticator または AWS EKS CLI によって処理され、kubeconfig ファイルのクラスターコンテキストに対して検証されます。

  4. 最後に、EKS オーソライザーは、認証されたユーザーのアクセスエントリに関連付けられたアクセス許可を検証し、それに応じてアクセスを許可または拒否します。

    • API は Amazon EKS 固有のアクセスポリシーを使用して、各アクセスエントリの認可レベルを定義します。これらのポリシーは、IAM Identity Center で設定されたロールとアクセス許可にマッピングできるため、AWS のサービスおよび EKS クラスター間で一貫したアクセスコントロールを確保できます。

ConfigMap ベースのアクセス管理の利点:

  1. 設定ミスのリスクの低減: API ベースの直接管理により、ConfigMap の手動編集に関連する一般的なエラーが排除されます。これにより、クラスターからユーザーをロックアウトする可能性のある誤った削除や構文エラーを防ぐことができます。

  2. 最小特権の原則を強化: クラスター作成者 ID からクラスター管理者アクセス許可が不要になり、より詳細で適切なアクセス許可の割り当てが可能になります。このアクセス許可は、Break Glass ユースケースに追加できます。

  3. 拡張セキュリティモデル: アクセスエントリが適用される前に、組み込みの検証を提供します。さらに、 は認証のために AWS IAM とのより緊密な統合を提供します。

  4. オペレーションの合理化: AWS ネイティブツールを使用してアクセス許可を管理する、より直感的な方法を提供します。

ベストプラクティス:

  1. AWS Organizations を使用して複数のアカウントを管理し、サービスコントロールポリシー (SCPs。

  2. 最小特権の原則を実装するには、さまざまな EKS ロール (管理者、開発者、読み取り専用など) の特定のアクセス許可セットを作成します。

  3. 属性ベースのアクセスコントロール (ABAC) を使用して、ユーザー属性に基づいてポッドにアクセス許可を動的に割り当てます。

  4. アクセス許可を定期的に監査して確認します。

考慮事項/制限事項:

  1. Identity Center によって生成されたロール ARNs にはランダムなサフィックスがあるため、静的設定での使用が困難です。

  2. Kubernetes リソースレベルでのきめ細かなアクセス許可のサポートが制限されました。カスタム Kubernetes RBAC ロールには追加の設定が必要です。Kubernetes ネイティブ RBAC に加えて、EKS クラスターでの高度なアクセス許可管理に Kyverno を使用することを検討してください。

オプション 2: Kubernetes グループにマッピングされた AWS IAM ユーザー/ロール

メリット:

  1. IAM アクセス許可をきめ細かく制御します。

  2. 予測可能なロール ARNs

デメリット:

  1. ユーザーアカウントの管理オーバーヘッドの増加

  2. 一元化された ID 管理の欠如

  3. IAM エンティティの拡散の可能性

ベストプラクティス:

  1. セキュリティと管理性を向上させるために、IAM ユーザーの代わりに IAM ロールを使用する

  2. 一貫性と管理の容易性を確保するために、ロールの命名規則を実装する

  3. IAM ポリシー条件を使用して、タグやその他の属性に基づいてアクセスを制限します。

  4. アクセスキーを定期的にローテーションし、アクセス許可を確認します。

考慮事項/制限事項:

  1. 多数のユーザーまたはロールを管理する際のスケーラビリティの問題

  2. 組み込みのシングルサインオン機能がない

オプション 3: OIDC プロバイダー

メリット:

  1. 既存の ID 管理システムとの統合

  2. ユーザーアカウントの管理オーバーヘッドの削減

デメリット:

  1. 追加の設定の複雑さ

  2. 認証中のレイテンシーが増加する可能性

  3. 外部 ID プロバイダーへの依存関係

ベストプラクティス:

  1. OIDC プロバイダーを慎重に設定して、安全なトークン検証を確保します。

  2. 有効期間の短いトークンを使用し、トークンの更新メカニズムを実装します。

  3. OIDC 設定を定期的に監査および更新します。

外部シングルサインオンプロバイダーを Amazon EKS と統合するリファレンス実装については、このガイドを参照してください。

考慮事項/制限事項:

  1. IAM と比較して、AWS サービスとのネイティブ統合が制限されました。

  2. EKS が署名キーを検出するには、OIDC プロバイダーの発行者 URL がパブリックにアクセス可能である必要があります。

ワークロードの AWS EKS Pod Identity と IRSA

Amazon EKS には、Amazon EKS クラスターで実行されるワークロードに AWS IAM アクセス許可を付与する 2 つの方法があります。サービスアカウント (IRSA) の IAM ロールと EKS ポッドアイデンティティです。

IRSA と EKS Pod Identity の両方が最小特権アクセス、認証情報の分離、監査可能性の利点を提供しますが、EKS Pod Identity はワークロードにアクセス許可を付与するために推奨される方法です。

EKS ポッドのアイデンティティと認証情報に関する詳細なガイダンスについては、セキュリティのベストプラクティスの「アイデンティティと認証情報」セクションを参照してください。

推奨事項

IAM Identity Center と CAM API を組み合わせる

  • 管理の簡素化: クラスターアクセス管理 API を IAM アイデンティティセンターと組み合わせて使用すると、管理者は他の AWS のサービスと一緒に EKS クラスターアクセスを管理できるため、異なるインターフェイスを切り替えるか、ConfigMaps を手動で編集する必要がなくなります。

  • アクセスエントリを使用して、クラスター外から IAM プリンシパルの Kubernetes アクセス許可を管理します。EKS API、AWS コマンドラインインターフェイス、AWS SDKs、AWS CloudFormation、AWS マネジメントコンソールを使用して、クラスターへのアクセスを追加および管理できます。つまり、クラスターを作成したのと同じツールでユーザーを管理できるということです。

  • 詳細な Kubernetes アクセス許可は、アクセスエントリとアクセスポリシーを介して SSO ID に関連付けられた IAM プリンシパルを持つ Kubernetes ユーザーまたはグループをマッピングすることで適用できます。

  • 開始するには、「アクセスエントリを使用するように認証モードを変更する」に従い、次に「既存の aws-auth ConfigMap エントリをアクセスエントリに移行する」に従います。