サービスアカウントの IAM ロール - Amazon EKS

サービスアカウントの IAM ロール

Amazon EKS クラスターのサービスアカウントの IAM ロールを使用すると、 IAM ロールを Kubernetes サービスアカウントに関連付けることができます。このサービスアカウントは、そのサービスアカウントを使用するポッドのコンテナ AWS にアクセス許可を提供できます。この機能を使用すると、ワーカーノード IAM ロールに拡張されたアクセス許可を提供する必要がなくなり、そのノードのポッドが AWS API を呼び出せるようになります。

アプリケーションは AWS 認証情報で AWS API リクエストに署名する必要があります。この機能により、Amazon EC2 インスタンスプロファイルで Amazon EC2 インスタンスに認証情報を提供するのと類似した方法で、アプリケーションで使用される認証情報を管理する方法が提供されます。AWS 認証情報を作成してコンテナに配布したり、Amazon EC2 インスタンスのロールを使用したりする代わりに、IAM ロールを Kubernetes サービスアカウントと関連付けることができます。ポッドのコンテナにあるアプリケーションは、AWS SDK または AWS CLI を使用して権限付与された AWS のサービスへの API リクエストを実行できます。

サービスアカウントの IAM ロール機能には、次の利点があります。

  • 最小権限 サービスアカウントの IAM ロール機能 —を使用すると、ワーカーノード IAM ロールに拡張されたアクセス許可を提供する必要がなくなり、そのノードのポッドが AWS API を呼び出せるようになります。IAM アクセス許可の範囲をサービスアカウントに設定でき、そのサービスアカウントを使用するポッドのみがアクセス許可にアクセスできます。また、この機能により、kiamkube2iam などのサードパーティーのソリューションが不要になります。

  • 認証情報の隔離— コンテナは、それが属するサービスアカウントに関連付けられている IAM ロールの認証情報のみを取得できます。コンテナは、別のポッドに属する別のコンテナを対象とした認証情報にアクセスすることはできません。

  • 監査性— 遡及的な監査を確実に行うため、CloudTrail を介してアクセスとイベントのロギングを利用できます。

開始するには、クラスターでのサービスアカウントの IAM ロールの有効化 を参照してください。

eksctl を使用したエンドツーエンドのチュートリアルについては、「チュートリアル: サービスアカウントに IAM を使用するように DaemonSet を更新する」を参照してください。