Amazon EKS で IAM を使用する方法 - Amazon EKS

Amazon EKS で IAM を使用する方法

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

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

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

アクション

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

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

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

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

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

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

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

"Action": "eks:Describe*"

Amazon EKS アクションの一覧については、「サービス認証リファレンス」の「Amazon Elastic Kubernetes Service で定義されるアクション」を参照してください。

リソース

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

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

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

"Resource": "*"

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

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

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

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

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

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

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

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

"Resource": "*"

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

条件キー

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

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

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

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

Amazon 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 プリンシパルのアクセスの有効化」を参照してください。

Amazon EKS でのリソースベースのポリシー

Amazon EKS では、 リソースベースのポリシーはサポートされていません。

Amazon EKS タグに基づいた認証

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

Amazon EKS でのIAM ロール

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

Amazon EKS での一時的な認証情報の使用

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

Amazon EKS では、一時認証情報が使用できます。

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

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

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

サービスロール

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

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

Amazon EKS での IAM ロールの選択

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