

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

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

# アマゾン EKS で IAM を使用する方法
<a name="security-iam-service-with-iam"></a>

IAM を使用して アマゾン EKS へのアクセスを管理する前に、アマゾン EKS で使用できる IAM 機能について理解しておく必要があります。アマゾン EKS およびその他の AWS のサービスが IAM と連携する方法の概要を把握するには*IAM ユーザーガイド* の「[IAM と連携する AWS のサービス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」を参照してください。

**Topics**
+ [アマゾン EKS のアイデンティティベースのポリシー](#security-iam-service-with-iam-id-based-policies)
+ [アマゾン EKS でのリソースベースのポリシー](#security-iam-service-with-iam-resource-based-policies)
+ [アマゾン EKS タグに基づいた認可](#security-iam-service-with-iam-tags)
+ [アマゾン EKS でのIAM 役割](#security-iam-service-with-iam-roles)

## アマゾン EKS のアイデンティティベースのポリシー
<a name="security-iam-service-with-iam-id-based-policies"></a>

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

### アクション
<a name="security-iam-service-with-iam-id-based-policies-actions"></a>

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

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

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

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

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

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

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

```
"Action": "eks:Describe*"
```

アマゾン EKS アクションの一覧については「サービス認可リファレンス」の「[アマゾン エラスティックKubernetesサービス で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-actions-as-permissions)」を参照してください。

### リソース
<a name="security-iam-service-with-iam-id-based-policies-resources"></a>

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

`Resource` JSON ポリシー要素はアクションが適用されるオブジェクトを指定します。ステートメントには`Resource` または `NotResource` 要素を含める必要があります。ベストプラクティスとして、[Amazon リソースネーム (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) を使用してリソースを指定します。これは*リソースレベルの許可*と呼ばれる特定のリソースタイプをサポートするアクションに対して実行できます。

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

```
"Resource": "*"
```

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

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

ARN の形式の詳細については「[アマゾン リソースネーム (ARN) と AWS のサービスの名前空間](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)」を参照してください。

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

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

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

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

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

```
"Resource": "*"
```

アマゾン EKS リソースタイプとその ARN の一覧については「サービス認可リファレンス」の「[アマゾン エラスティックKubernetesサービス で定義されるリソース](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-resources-for-iam-policies)」を参照してください。各リソースの ARN を、どのアクションで指定できるかについては「[アマゾン エラスティックKubernetesサービス で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-actions-as-permissions)」を参照してください。

### 条件キー
<a name="security-iam-service-with-iam-id-based-policies-conditionkeys"></a>

アマゾン EKS では独自の条件キーが定義されており、また一部のグローバル条件キーの使用がサポートされています。すべての AWS グローバル条件キーを確認するには、*IAM ユーザーガイド*の「[AWS グローバル条件コンテキストキー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)」を参照してください。

OpenID Connect プロバイダーをクラスターに関連付ける場合に条件キーを設定できます。詳細については、「[IAM ポリシーの例](authenticate-oidc-identity-provider.md#oidc-identity-provider-iam-policy)」を参照してください。

すべての Amazon EC2 アクションは `aws:RequestedRegion` および `ec2:Region` 条件キーをサポートします。詳細については「[例: 特定の AWS リージョンへのアクセスの制限](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExamplePolicies_EC2.html#iam-example-region)」を参照してください。

Amazon EKS 条件キーのリストについては「*サービス認可リファレンス*」の「[Amazon エラスティックKubernetesサービス によって定義された条件](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-policy-keys)」を参照してください。条件キーを使用できるアクションとリソースについては「[Amazon エラスティックKubernetesサービス で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-actions-as-permissions)」を参照してください。

### 例
<a name="security-iam-service-with-iam-id-based-policies-examples"></a>

アマゾン EKS でのアイデンティティベースのポリシーの例は「[Amazon EKS でのアイデンティティベースのポリシーの例](security-iam-id-based-policy-examples.md)」でご確認ください。

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

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

## アマゾン EKS でのリソースベースのポリシー
<a name="security-iam-service-with-iam-resource-based-policies"></a>

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

## アマゾン EKS タグに基づいた認可
<a name="security-iam-service-with-iam-tags"></a>

タグはアマゾン EKS リソースにアタッチすることも、アマゾン EKS へのリクエストの際に渡すこともできます。タグに基づいてアクセスを制御するには`aws:ResourceTag/key-name `、`aws:RequestTag/key-name `、または `aws:TagKeys` の条件キーを使用して、ポリシーの[条件要素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)でタグ情報を提供します。アマゾン EKS リソースのタグ付けの詳細については「[タグを使用して Amazon EKS リソースを整理する](eks-using-tags.md)」を参照してください。条件キーでタグを使用できるアクションの詳細については「[Service Authorization Reference](https://docs.aws.amazon.com/service-authorization/latest/reference/reference.html)」(サービス認可のリファレンス) の「[アマゾン EKS で定義されたアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-actions-as-permissions)」を参照してください。

## アマゾン EKS でのIAM 役割
<a name="security-iam-service-with-iam-roles"></a>

[IAM 役割](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) は特定のアクセス許可を持つ、AWS アカウント内のエンティティです。

### アマゾン EKS での一時的な認証情報の使用
<a name="security-iam-service-with-iam-roles-tempcreds"></a>

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

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

### サービスにリンクされたロール
<a name="security-iam-service-with-iam-roles-service-linked"></a>

 [サービスリンクロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-service-linked-role)は、AWS サービスが他のサービスのリソースにアクセスしてお客様の代わりにアクションを完了することを許可します。サービスリンクロールは IAM アカウント内に表示され、サービスによって所有されます。管理者はサービスにリンクされたロールのアクセス許可を確認できますが、編集することはできません。

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

### サービス役割
<a name="security-iam-service-with-iam-roles-service"></a>

この機能により、ユーザーに代わってサービスが[サービスロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-service-role)を引き受けることが許可されます。この役割により、サービスがお客様に代わって他のサービスのリソースにアクセスし、アクションを完了することが許可されます。サービスロールはIAM アカウントに表示され、アカウントによって所有されます。つまり、IAM 管理者はこの役割の権限を変更できます。ただし、これを行うことにより、サービスの機能が損なわれる場合があります。

アマゾン EKS ではサービス役割がサポートされています。詳細については[Amazon EKS クラスター の IAM ロール](cluster-iam-role.md)および[Amazon EKS ノードの IAM ロール](create-node-role.md)を参照してください。

### アマゾン EKS での IAM 役割の選択
<a name="security-iam-service-with-iam-roles-choose"></a>

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