Amazon Web Services ブログ

Amazon EKS Pod Identity は、Amazon EKS クラスター上のアプリケーションの IAM 許可を簡素化します

11月26日より、Amazon EKS Pod Identity を使用して、AWS のサービスにアクセスするアプリケーションを簡素化できます。この拡張機能により、Amazon Elastic Kubernetes Service (Amazon EKS) クラスター内のアプリケーションに必要な IAM 許可を定義できるようになり、クラスター外の AWS のサービスに接続できるようになったため、シームレスで簡単な設定エクスペリエンスを享受できます。

Amazon EKS Pod Identity は、多くの EKS クラスターで直面することが増えた許可の管理に関する課題を解決するのに役立ちます。

Amazon EKS Pod Identity でエクスペリエンスを簡素化する
2019 年、サービスアカウントの IAM ロール (IRSA) を導入しました。IRSA では、IAM ロールを Kubernetes サービスアカウントに関連付けることができます。これにより、ポッドに必要な許可のみを与えることで、最小特権の原則を実装できます。このアプローチは IAM のポッドに優先順位を付け、デベロッパーが AWS のサービスへの最小特権アクセスを可能にするきめ細かな許可でアプリケーションを設定するのに役立ちます。

Amazon EKS Pod Identity により、Kubernetes アイデンティティに AWS 許可を付与する設定と自動化がさらに簡単になりました。クラスター管理者は、アプリケーションをすべての AWS リソースに対して認証するために Amazon EKS サービスと IAM サービスを切り替える必要がなくなります。

Amazon EKS Pod Identity の使用を開始するまでの全体的なワークフローは、次のいくつかの簡単なステップにまとめることができます。

  • ステップ 1: アプリケーションに必要な許可を持つ IAM ロールを作成し、その信頼ポリシーでサービスプリンシパルとして pods.eks.amazonaws.com を指定します。
  • ステップ 2: Amazon EKS コンソールまたは AWS コマンドラインインターフェイス (AWS CLI) を使用して Amazon EKS Pod Identity エージェントアドオンをインストールします。
  • ステップ 3: Amazon EKS コンソール、API、または AWS CLI でロールをサービスアカウントに直接マッピングします。

完了すると、そのサービスアカウントを使用する新しいポッドはすべて、IAM 認証情報を受け取るように自動的に設定されます。

使用を開始しましょう
EKS Pod Identity の開始方法をお見せしましょう。この記事のデモでは、Amazon EKS クラスターで実行されているシンプルな API に許可を設定する必要があります。これにより、Amazon Simple Storage Service (Amazon S3) バケット内のファイルのリストが返されます。

まず、アプリケーションを正しく実行できるように、IAM ロールを作成して必要な許可を与える必要があります。このデモの場合、S3 バケットにアクセスするための許可を設定する必要があります。

次に、同じ IAM ロールで、その信頼ポリシーを設定し、プリンシパルを pods.eks.amazonaws.com に設定する必要があります。このデモで使われている IAM テンプレートは次のとおりです。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "pods.eks.amazonaws.com"
            },
            "Action": [
                "sts:AssumeRole",
                "sts:TagSession"
            ]
        }
    ]
}

この段階で IAM ロールの準備が整いました。次に、クラスターで Amazon EKS Pod Identity エージェントを設定する必要があります。この記事では、既存の EKS クラスターを使用しています。その方法を知りたい場合は、「Amazon EKS の開始方法」を参照してください。

次に、Amazon EKS ダッシュボードに移動し、EKS クラスターを選択します。

EKS クラスターページで、[Add-ons] (アドオン) タブを選択し、[Get more add-ons] (アドオンをさらに追加) を選択する必要があります。

次に、Amazon EKS Pod Identity エージェントアドオンを追加する必要があります。

次のページでは、必要に応じて追加で設定を行えます。このデモでは、デフォルト設定のままにして、[Next] (次へ) を選択します。

あとは、アドオンの設定を確認して [Create] (作成) を選択するだけです。

数分後、クラスターで Amazon EKS Pod Identity エージェントアドオンがアクティブになります。

クラスターに Amazon EKS Pod Identity にあることを確認したら、IAM ロールを Kubernetes ポッドに関連付ける必要があります。

EKS クラスターの [Access] (アクセス) タブに移動する必要があります。[Pod Identity associations] (Pod Identity の関連付け) セクションで、[Create Pod Identity association] (Pod Identity の関連付けを作成) を選択して IAM ロールを Kubernetes ポッドにマッピングします。

ここでは、最初に作成した IAM ロールを使用します。また、Kubernetes 名前空間とサービスアカウントを定義する必要があります。まだ存在しない場合は、名前空間とサービスアカウントの名前を入力できます。既に存在する場合は、ドロップダウンから選択できます。[Create] (作成) を選択します。

EKS Pod Identity を使用して Amazon EKS で実行されているアプリケーションの IAM 許可を設定するために必要なステップは以上になります。これで、自分の IAM ロールが [Pod Identity associations] (Pod Identity の関連付け) に一覧表示されていることがわかります。

Amazon EKS で実行されている API をテストすると、期待どおりに実行され、S3 バケット内のファイルのリストが返されます。

curl -X https://<API-URL> -H "Accept: application/json" 

{
   "files": [
         "test-file-1.md",
         "test-file-2.md"
    ]        
}

Amazon EKS Pod Identity を使用すると、Amazon EKS で実行されているアプリケーションの IAM ロールの管理が簡単になることがわかりました。新しいクラスターを作成するたびにロール信頼ポリシーを更新しなくても、複数の EKS クラスターで IAM ロールを簡単に再利用できます。

EKS Pod Identity を設定するための新しい AWS API
また、AWS CLI を使用してクラスターで Amazon EKS Pod Identity を柔軟に設定することもできます。Amazon EKS Pod Identity には、使用できる新しい API セットが用意されています。

例えば、aws eks create-addon を使用して Amazon EKS Pod Identity エージェントアドオンをクラスターにインストールできます。AWS CLI コマンドは次のとおりです。

$ aws eks create-addon \
--cluster-name <CLUSTER_NAME> \
--addon-name eks-pod-identity-agent \
--addon-version v1.0.0-eksbuild.1

{
    "addon": {
    "addonName": "eks-pod-identity-agent",
    "clusterName": "<CLUSTER_NAME>",
    "status": "CREATING",
    "addonVersion": "v1.0.0-eksbuild.1",
    "health": {
        "issues": []
        },
    "addonArn": "<ARN>",
    "createdAt": 1697734297.597,
    "modifiedAt": 1697734297.612,
    "tags": {}
    }
}

AWS API でできることのもう 1 つの例として、IAM ロールを Kubernetes ポッドにマッピングすることが挙げられます。

$ aws eks create-pod-identity-association \
  --cluster-name <CLUSTER_NAME> \
  --namespace <NAMESPACE> \
  --service-account <SERVICE_ACCOUNT_NAME> \
  --role-arn <IAM_ROLE_ARN>

知っておくべきこと

可用性 – Amazon EKS Pod Identity は、Amazon EKS がサポートするすべての AWS リージョンで利用できます。ただし、AWS GovCloud (米国東部)、AWS GovCloud (米国西部)、中国 (北京、Sinnet が運営)、中国 (寧夏、NWCD が運営) は除きます。

料金 – Amazon EKS Pod Identity は無料でご利用いただけます。

サポート対象の Amazon EKS クラスター – Amazon EKS Pod Identity は、Amazon EKS でバージョン 1.24 以降を実行している Kubernetes をサポートしています。詳細については、「EKS Pod Identity のクラスターバージョン」を参照してください。

サポート対象の AWS SDK バージョン – 最新の AWS SDK バージョンを使用するにはアプリケーションを更新する必要があります。AWS SDK のインストールと更新方法については、AWS デベロッパーツールをご覧ください。

今すぐ使用を開始して、「EKS Pod Identities」のドキュメントページにアクセスして、アプリケーションの IAM 管理を簡素化する方法の詳細をご覧ください。

構築がうまくいきますように。
– Donnie

原文はこちらです。