アマゾン EKS で IAM を使用する方法 - Amazon EKS

このページの改善にご協力ください

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

アマゾン EKS で IAM を使用する方法

IAM を使用して アマゾン EKS へのアクセスを管理する前に、アマゾン EKS で使用できる IAM 機能について理解しておく必要があります。アマゾン EKS およびその他の AWS のサービスが IAM と連携する方法の概要を把握するにはIAM ユーザーガイド の「IAM と連携する AWS のサービス」を参照してください。

アマゾン EKS のアイデンティティベースのポリシー

IAM アイデンティティベースのポリシーでは許可または拒否するアクションとリソース、またアクションを許可または拒否する条件を指定できます。アマゾン EKS は特定のアクション、リソース、および条件キーをサポートしています。JSON ポリシーで使用するすべての要素については「IAM ユーザーガイド」の「IAM JSON ポリシーエレメントのリファレンス」を参照してください。

アクション

管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。

JSON ポリシーの Action 要素にはポリシー内のアクセスを許可または拒否するために使用できるアクションが記述されます。ポリシーアクションの名前は通常、関連する AWS API オペレーションと同じです。一致する API オペレーションのないアクセス許可のみのアクションなど、いくつかの例外があります。また、ポリシーに複数のアクションが必要なオペレーションもあります。これらの追加アクションは依存アクションと呼ばれます。

このアクションは関連付けられたオペレーションを実行するためのアクセス許可を付与するポリシーで使用されます。

アマゾン EKS のポリシーアクションはアクションの前にプレフィックス eks: を付加します。例えば、アマゾン EKS クラスターについて説明する情報を入手するアクセス許可を他のユーザーに付与するにはポリシーに DescribeCluster アクションを含めます。ポリシーステートメントにはAction または NotAction 要素を含める必要があります。

単一のステートメントに複数のアクションを指定するには次のようにコンマで区切ります。

"Action": ["eks:action1", "eks:action2"]

ワイルドカード (*) を使用して複数アクションを指定できます。例えば、Describe という単語で始まるすべてのアクションを指定するには次のアクションを含めます。

"Action": "eks:Describe*"

アマゾン EKS アクションの一覧については「サービス認可リファレンス」の「アマゾン エラスティックKubernetesサービス で定義されるアクション」を参照してください。

リソース

管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。

Resource JSON ポリシー要素はアクションが適用されるオブジェクトを指定します。ステートメントにはResource または NotResource 要素を含める必要があります。ベストプラクティスとして、Amazon リソースネーム (ARN) を使用してリソースを指定します。これはリソースレベルの許可と呼ばれる特定のリソースタイプをサポートするアクションに対して実行できます。

オペレーションのリスト化など、リソースレベルの許可をサポートしないアクションの場合はステートメントがすべてのリソースに適用されることを表示するワイルドカード (*) を使用します。

"Resource": "*"

アマゾン EKS クラスターリソースの ARN は次のようになります。

arn:aws:eks:region-code:account-id:cluster/cluster-name

ARN の形式の詳細については「アマゾン リソースネーム (ARN) と AWS のサービスの名前空間」を参照してください。

例えば、ステートメントで マイクラスター という名前のクラスターを指定するには次の ARN を使用します。

"Resource": "arn:aws:eks:region-code:111122223333:cluster/my-cluster"

特定のアカウントと AWS リージョンに属するすべてのクラスターを指定するにはワイルドカード (*) を使用します。

"Resource": "arn:aws:eks:region-code:111122223333:cluster/*"

リソースの作成を含む、一部の アマゾン EKS アクションは特定のリソースで実行できません。このような場合はワイルドカード *を使用する必要があります。

"Resource": "*"

アマゾン EKS リソースタイプとその ARN の一覧については「サービス認可リファレンス」の「アマゾン エラスティックKubernetesサービス で定義されるリソース」を参照してください。各リソースの ARN を、どのアクションで指定できるかについては「アマゾン エラスティックKubernetesサービス で定義されるアクション」を参照してください。

条件キー

アマゾン EKS では独自の条件キーが定義されており、また一部のグローバル条件キーの使用がサポートされています。すべての AWS グローバル条件キーを確認するには、IAM ユーザーガイドの「AWS グローバル条件コンテキストキー」を参照してください。

OpenID Connect プロバイダーをクラスターに関連付ける場合に条件キーを設定できます。詳細については、「IAM ポリシーの例」を参照してください。

すべての Amazon EC2 アクションは aws:RequestedRegion および ec2:Region 条件キーをサポートします。詳細については「例: 特定の AWS リージョンへのアクセスの制限」を参照してください。

Amazon EKS 条件キーのリストについては「サービス認可リファレンス」の「Amazon エラスティックKubernetesサービス によって定義された条件」を参照してください。条件キーを使用できるアクションとリソースについては「Amazon エラスティックKubernetesサービス で定義されるアクション」を参照してください。

アマゾン EKS でのアイデンティティベースのポリシーの例は「Amazon EKS でのアイデンティティベースのポリシーの例」でご確認ください。

Amazon EKS クラスターを作成すると、このクラスターを作成する IAM プリンシパルにはAmazon EKS コントロールプレーンのクラスター役割ベースアクセスコントロール (RBAC) 設定で、system:masters 許可が自動的に付与されます。このプリンシパルは表示可能な設定の中には表示されません。したがって、どのプリンシパルが最初にクラスターを作成したのかを追跡する必要があります。追加の IAM プリンシパルがクラスターとインタラクションできるようにするには Kubernetes 内の aws-auth ConfigMap を編集し、aws-auth ConfigMap で指定した group の名前を使用して、Kubernetes rolebinding または clusterrolebinding を作成します。

ConfigMap の使用に関する詳細については「IAM ユーザーおよびロールに Kubernetes API へのアクセスを付与する」を参照してください。

アマゾン EKS でのリソースベースのポリシー

アマゾン EKS では リソースベースのポリシーはサポートされていません。

アマゾン EKS タグに基づいた認可

タグはアマゾン EKS リソースにアタッチすることも、アマゾン EKS へのリクエストの際に渡すこともできます。タグに基づいてアクセスを制御するにはaws:ResourceTag/key-name aws:RequestTag/key-name 、または aws:TagKeys の条件キーを使用して、ポリシーの条件要素でタグ情報を提供します。アマゾン EKS リソースのタグ付けの詳細については「タグを使用して Amazon EKS リソースを整理する」を参照してください。条件キーでタグを使用できるアクションの詳細については「Service Authorization Reference」(サービス認可のリファレンス) の「アマゾン EKS で定義されたアクション」を参照してください。

アマゾン EKS でのIAM 役割

IAM 役割 は特定のアクセス許可を持つ、AWS アカウント内のエンティティです。

アマゾン EKS での一時的な認証情報の使用

一時的な認証情報を使用して、フェデレーションでサインインする、IAM 役割を引き受ける、またはクロスアカウント役割を引き受けることができます。一時的なセキュリティ認証情報を取得するにはAssumeRole または GetFederationToken などの AWS STS API オペレーションを呼び出します。

アマゾン EKS では一時認証情報が使用できます。

サービスにリンクされたロール

サービスリンクロールは、AWS サービスが他のサービスのリソースにアクセスしてお客様の代わりにアクションを完了することを許可します。サービスリンクロールは IAM アカウント内に表示され、サービスによって所有されます。管理者はサービスにリンクされたロールのアクセス許可を確認できますが、編集することはできません。

アマゾン EKS はサービスにリンクされた役割をサポートしています。アマゾン EKS でのサービスにリンクされた役割の作成または管理の詳細については「Amazon EKS でのサービスにリンクされたロールの使用」を参照してください。

サービス役割

この機能により、ユーザーに代わってサービスがサービス役割を引き受けることが許可されます。この役割により、サービスがお客様に代わって他のサービスのリソースにアクセスし、アクションを完了することが許可されます。サービス役割はIAM アカウントに表示され、アカウントによって所有されます。つまり、IAM 管理者はこの役割の権限を変更できます。ただし、これを行うことにより、サービスの機能が損なわれる場合があります。

アマゾン EKS ではサービス役割がサポートされています。詳細についてはAmazon EKS クラスター の IAM ロールおよびAmazon EKS ノードの IAM ロールを参照してください。

アマゾン EKS での IAM 役割の選択

アマゾン EKS でクラスターリソースを作成する場合は他のいくつかの AWS リソースに アマゾン EKS が自動的にアクセスすることを許可するための役割を、ユーザーが選択する必要があります。以前に作成したサービス役割がある場合、アマゾン EKS により、選択できる役割のリストが提示されます。アマゾン EKS 管理のポリシーがアタッチされた役割を選択することが重要です。詳細については既存のクラスターロールの確認および既存のノードロールの確認を参照してください。