

# Amazon EC2 の IAM ロール
<a name="iam-roles-for-amazon-ec2"></a>

アプリケーションは AWS 認証情報を使用して API リクエストに署名する必要があります。したがって、アプリケーションデベロッパーである場合、EC2 インスタンスで実行するアプリケーションの認証情報を管理する戦略が必要です。例えば、AWS 認証情報をインスタンスに安全に配布することで、他のユーザーから認証情報を保護しながら、それらのインスタンスのアプリケーションで認証情報を使用してリクエストに署名できます。ただし、各インスタンスに認証情報を安全に配布することは難しく、特に AWS がユーザーの代わりに作成するスポットインスタンスや Auto Scaling グループのインスタンスなどではそれが顕著です。また、AWS 認証情報を循環させる場合、各インスタンスの認証情報を更新できる必要もあります。

アプリケーションが使用するセキュリティ認証情報をお客様が管理する必要なく、アプリケーションがインスタンスから API リクエストを安全に作成できるように、IAM ロールをデザインしました。AWS 認証情報を作成および配布する代わりに、以下の方法で、IAM ロールを使用して API リクエストを作成するアクセス許可を委任できます。

1. IAM ロールを作成します。

1. ロールを行うアカウントまたは AWS のサービスを定義する

1. ロールを引き受けた後で、アプリケーションで使用できる API アクションおよびリソースを定義します。

1. インスタンスの起動時にロールを指定するか、既存のインスタンスにロールをアタッチします。

1. アプリケーションで一時的な認証情報のセットを取得して使用します。

例えば、IAM ロールを使用し、Amazon S3 のバケットを使用する必要のあるインスタンスで実行中のアプリケーションに、アクセス許可を与えることができます。JSON 形式のポリシーを作成することにより、IAM ロールのアクセス許可を指定できます。これらのポリシーは ユーザー用に作成するポリシーに類似しています。ロールを変更すると、その変更はすべてのインスタンスに反映されます。

**注記**  
Amazon EC2 IAM ロールの認証情報はロールで設定された最大セッション期間の対象にはなりません。詳細については、「*IAM ユーザーガイド*」の「[ロールを引き受けることができない](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)」を参照してください。

IAM ロールを作成するとき、アプリケーションが必要とする特定の API コールへのアクセスを制限する最小特権の IAM ポリシーを関連付けます。Windows 間の通信では明確に定義されドキュメント化された Windows グループとロールを使用して、Windows インスタンス間のアプリケーションレベルのアクセスを許可します。グループとロールを使用すると、顧客は最小特権のアプリケーションと NTFS フォルダレベルのアクセス許可を定義して、アプリケーション固有の要件へのアクセスを制限できます。

インスタンスにアタッチできる IAM ロールは 1 つだけですが、同じロールを複数のインスタンスにアタッチできます。IAM ロールの作成と使用の詳細については、「*IAM ユーザーガイド*」の「[ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)」を参照してください。

リソースレベルのアクセス許可を IAM ポリシーに適用して、インスタンスの IAM ロールのアタッチ、置換、またはデタッチをユーザーに許可するかどうを制御できます。詳細については、[Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可](iam-policies-for-amazon-ec2.md#ec2-supported-iam-actions-resources)と[例: IAM ロールの使用](ExamplePolicies_EC2.md#iam-example-iam-roles)の例を参照してください。

**Topics**
+ [インスタンスプロファイル](#ec2-instance-profile)
+ [ユースケースに対するアクセス権限](#generate-policy-for-iam-role)
+ [セキュリティ認証情報の取得](instance-metadata-security-credentials.md)
+ [ロールをインスタンスにアタッチするためのアクセス権限](permission-to-pass-iam-roles.md)
+ [ロールをインスタンスにアタッチする](attach-iam-role.md)
+ [インスタンスアイデンティティロール](#ec2-instance-identity-roles)

## インスタンスプロファイル
<a name="ec2-instance-profile"></a>

Amazon EC2 はIAM ロールのコンテナとして*インスタンスプロファイル*を使用します。IAM コンソールを使用して IAM ロールを作成すると、コンソールによりインスタンスプロファイルが自動的に作成され、対応するロールと同じ名前が付けられます。Amazon EC2 コンソールを使用して IAM ロールを持つインスタンスを起動する場合、またはインスタンスに IAM ロールをアタッチする場合はインスタンスプロファイル名のリストに基づいてロールを選択してください。

AWS CLI、API、または AWS SDK を使用してロールを作成する場合、ロールとインスタンスプロファイルを別個のアクションとして作成します。名前は異なる可能性があります。次に AWS CLI、API、または AWS SDK を使用して IAM ロールを持つインスタンスを起動する場合、またはインスタンスに IAM ロールをアタッチする場合はインスタンスプロファイル名を指定します。

インスタンスプロファイルに含めることができる IAM ロールの数は 1 つのみです。IAM ロールを複数のインスタンス プロファイルに含めることができます。

インスタンスのアクセス許可を更新するには、インスタンスプロファイルを置き換えます。この変更が有効になるまでに最大 1 時間の遅延が発生するため、インスタンスプロファイルからロールを削除することはお勧めしません。

詳細については、「*IAM ユーザーガイド*」の「[インスタンスプロファイルの使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)」を参照してください。

## ユースケースに対するアクセス権限
<a name="generate-policy-for-iam-role"></a>

アプリケーションの IAM ロールを最初に作成するときに、必要な範囲を超えたアクセス権限を付与することがあります。本番環境でアプリケーションを起動する前に、IAM ロールのアクセスアクティビティに基づく IAM ポリシーを生成できます。IAM Access Analyzer は AWS CloudTrail ログを確認し、指定した日付範囲内のロールが使用したアクセス許可を含むポリシーテンプレートを生成します。テンプレートを使用して、きめ細かなアクセス権限で管理ポリシーを作成し、それを IAM ロールにアタッチできます。これにより、特定のユースケースでロールが AWS リソースとインタラクションするために必要なアクセス権限のみを付与します。これは[最小特権の付与](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)のベストプラクティスに準拠するのに役立ちます。詳細については、「*IAM ユーザーガイド*」の「[IAM Access Analyzer ポリシーの生成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html)」を参照してください。

## Amazon EC2 インスタンスのインスタンスアイデンティティロール
<a name="ec2-instance-identity-roles"></a>

起動する各 Amazon EC2 インスタンスにはインスタンスアイデンティティを表す*インスタンスアイデンティティロール*があります。インスタンスアイデンティティロールは IAM ロールの一種です。インスタンス ID ロールを使用するように統合されている AWS サービスと機能はそのロールを使用してサービスのインスタンスを識別できます。

インスタンスアイデンティティロール認証情報は`/identity-credentials/ec2/security-credentials/ec2-instance` のインスタンスメタデータサービス (IMDS) からアクセスできます。認証情報はAWS 一時アクセスキー ID およびセッショントークンで構成されています。これらはインスタンス ID ロールを使用する AWS サービスへの AWS Sigv4 リクエストに署名するために使用されます。認証情報はインスタンスアイデンティティロールを使用するサービスまたは機能がインスタンスで有効になっているかどうかにかかわらず、インスタンスメタデータに存在します。

インスタンス ID ロールはインスタンスの起動時に自動的に作成され、ロール信頼ポリシー文書はなく、ID ポリシーやリソースポリシーの対象にもなりません。

### サポートされるサービス
<a name="iir-supported-services"></a>

AWS サービスはインスタンス ID ロールを使用します。
+ **Amazon EC2** – [EC2 Instance Connect](connect-linux-inst-eic.md) はインスタンス ID ロールを使用して Linux インスタンスのホストキーを更新します。
+ **Amazon GuardDuty** — [ランタイムモニタリング](https://docs.aws.amazon.com/guardduty/latest/ug/runtime-monitoring.html)はインスタンスアイデンティティロールを使用して、ランタイムエージェントが GuardDuty VPC エンドポイントにセキュリティテレメトリを送信できるようにします。
+ **AWS Lambda** – [Lambda マネージドインスタンス](https://docs.aws.amazon.com/lambda/latest/dg/lambda-managed-instances.html)は、ライフサイクルフック、テレメトリ、アーティファクトディストリビューションにインスタンス ID ロールを使用します。
+ **AWS Security Token Service (AWS STS)** - インスタンス ID ロールの認証情報は AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html) アクションで使用できます。
+ **AWS Systems Manager** - [デフォルトのホスト管理設定](https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet-manager-default-host-management-configuration.html)を使用する場合、AWS Systems Manager はインスタンスアイデンティティロールによって提供された ID を使用して EC2 インスタンスを登録します。インスタンスを識別すると、システムマネージャーは `AWSSystemsManagerDefaultEC2InstanceManagementRole` IAM ロールをインスタンスに渡すことができます。

インスタンス ID ロールはインスタンス ID ロールと統合されていないため、他の AWS サービスや機能では使用できません。

### インスタンスアイデンティティロール ARN
<a name="iir-arn"></a>

インスタンスアイデンティティロール ARN は次の形式です。

```
arn:aws-partition:iam::account-number:assumed-role/aws:ec2-instance/instance-id
```

例:

```
arn:aws:iam::0123456789012:assumed-role/aws:ec2-instance/i-1234567890abcdef0
```

ARN の詳細については「IAM ユーザーガイド」の「[Amazon リソースネーム (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)」を参照してください。