Amazon EC2 の IAM ロール
アプリケーションは AWS 認証情報を使用して API リクエストに署名する必要があります。したがって、アプリケーションデベロッパーである場合、EC2 インスタンスで実行するアプリケーションの認証情報を管理する戦略が必要です。例えば、AWS 認証情報をインスタンスに安全に配布することで、他のユーザーから認証情報を保護しながら、それらのインスタンスのアプリケーションで認証情報を使用してリクエストに署名できます。ただし、各インスタンスに認証情報を安全に配布することは難しく、特に AWS がユーザーの代わりに作成するスポットインスタンスや Auto Scaling グループのインスタンスなどではそれが顕著です。また、AWS 認証情報を循環させる場合、各インスタンスの認証情報を更新できる必要もあります。
アプリケーションが使用するセキュリティ認証情報をお客様が管理する必要なく、アプリケーションがインスタンスから API リクエストを安全に作成できるように、IAM ロールをデザインしました。AWS 認証情報を作成および配布する代わりに、以下の方法で、IAM ロールを使用して API リクエストを作成するアクセス許可を委任できます。
-
IAM ロールを作成します。
-
ロールを行うアカウントまたは AWS のサービスを定義する
-
ロールを引き受けた後で、アプリケーションで使用できる API アクションおよびリソースを定義します。
-
インスタンスの起動時にロールを指定するか、既存のインスタンスにロールをアタッチします。
-
アプリケーションで一時的な認証情報のセットを取得して使用します。
例えば、IAM ロールを使用し、Amazon S3 のバケットを使用する必要のあるインスタンスで実行中のアプリケーションに、アクセス許可を与えることができます。JSON 形式のポリシーを作成することにより、IAM ロールのアクセス許可を指定できます。これらのポリシーは、 ユーザー用に作成するポリシーに類似しています。ロールを変更すると、その変更はすべてのインスタンスに反映されます。
注記
Amazon EC2 IAM ロールの認証情報は、ロールで設定された最大セッション期間の対象にはなりません。詳細については、「IAM ユーザーガイド」の「IAM ロールの使用」を参照してください。
IAM ロールを作成するとき、アプリケーションが必要とする特定の API コールへのアクセスを制限する最小権限の IAM ポリシーを関連付けます。Windows 間の通信では、明確に定義されドキュメント化された Windows グループとロールを使用して、Windows インスタンス間のアプリケーションレベルのアクセスを許可します。グループとロールを使用すると、顧客は最小権限のアプリケーションと NTFS フォルダレベルのアクセス許可を定義して、アプリケーション固有の要件へのアクセスを制限できます。
インスタンスにアタッチできる IAM ロールは 1 つだけですが、同じロールを複数のインスタンスにアタッチできます。IAM ロールの作成と使用の詳細については、IAM ユーザーガイドのロールを参照してください。
リソースレベルのアクセス許可を IAM ポリシーに適用して、インスタンスの IAM ロールのアタッチ、置換、またはデタッチをユーザーに許可するかどうを制御できます。詳細については、Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可と、例: IAM ロールの使用の例を参照してください。
コンテンツ
インスタンスプロファイル
Amazon EC2 は、IAM ロールのコンテナとしてインスタンスプロファイルを使用します。IAM コンソールを使用して IAM ロールを作成すると、コンソールによりインスタンスプロファイルが自動的に作成され、対応するロールと同じ名前が付けられます。Amazon EC2 コンソールを使用して IAM ロールを持つインスタンスを起動する場合、またはインスタンスに IAM ロールをアタッチする場合は、インスタンスプロファイル名のリストに基づいてロールを選択します。
AWS CLI、API、または AWS SDK を使用してロールを作成する場合、ロールとインスタンスプロファイルを別個のアクションとして作成します。名前は異なる可能性があります。次に AWS CLI、API、または AWS SDK を使用して IAM ロールを持つインスタンスを起動する場合、またはインスタンスに IAM ロールをアタッチする場合は、インスタンスプロファイル名を指定します。
インスタンスプロファイルに含めることができる IAM ロールの数は 1 つのみです。この制限を増やすことはできません。
詳細については、IAM ユーザーガイドのインスタンスプロファイルを参照してください。
ユースケースに対するアクセス権限
アプリケーションの IAM ロールを最初に作成するときに、必要な範囲を超えたアクセス権限を付与することがあります。本番環境でアプリケーションを起動する前に、IAM ロールのアクセスアクティビティに基づく IAM ポリシーを生成できます。IAM Access Analyzer は AWS CloudTrail ログを確認し、指定した日付範囲内のロールが使用したアクセス許可を含むポリシーテンプレートを生成します。テンプレートを使用して、きめ細かなアクセス権限で管理ポリシーを作成し、それを IAM ロールにアタッチできます。これにより、特定のユースケースでロールが AWS リソースとインタラクションするために必要なアクセス権限のみを付与します。これは、最小アクセス権限の付与のベストプラクティスに準拠するのに役立ちます。詳細については、「IAM ユーザーガイド」の「IAM Access Analyzer ポリシーの生成」を参照してください。
Amazon EC2 インスタンスのインスタンスアイデンティティロール
起動する各 Amazon EC2 インスタンスには、インスタンスアイデンティティを表すインスタンスアイデンティティロールがあります。インスタンスアイデンティティロールは IAM ロールの一種です。インスタンス ID ロールを使用するように統合されている AWS サービスと機能は、そのロールを使用してサービスのインスタンスを識別できます。
インスタンスアイデンティティロール認証情報は、/identity-credentials/ec2/security-credentials/ec2-instance
のインスタンスメタデータサービス (IMDS) からアクセスできます。認証情報は、AWS 一時アクセスキー ID およびセッショントークンで構成されています。これらは、インスタンス ID ロールを使用する AWS サービスへの AWS Sigv4 リクエストに署名するために使用されます。認証情報は、インスタンスアイデンティティロールを使用するサービスまたは機能がインスタンスで有効になっているかどうかにかかわらず、インスタンスメタデータに存在します。
インスタンス ID ロールは、インスタンスの起動時に自動的に作成され、ロール信頼ポリシー文書はなく、ID ポリシーやリソースポリシーの対象にもなりません。
サポートされる サービス
AWS サービスはインスタンス ID ロールを使用します。
-
Amazon EC2 – EC2 Instance Connect は、インスタンス ID ロールを使用して Linux インスタンスのホストキーを更新します。
-
Amazon GuardDuty — ランタイムモニタリングは、インスタンスアイデンティティロールを使用して、ランタイムエージェントが GuardDuty VPC エンドポイントにセキュリティテレメトリを送信できるようにします。
-
AWS Security Token Service (AWS STS) - インスタンス ID ロールの認証情報は AWS STS
GetCallerIdentity
アクションで使用できます。 -
AWS Systems Manager - デフォルトのホスト管理設定を使用する場合、AWS Systems Manager はインスタンスアイデンティティロールによって提供された ID を使用して EC2 インスタンスを登録します。インスタンスを識別すると、システムマネージャーは
AWSSystemsManagerDefaultEC2InstanceManagementRole
IAM ロールをインスタンスに渡すことができます。
インスタンス ID ロールは、インスタンス ID ロールと統合されていないため、他の AWS サービスや機能では使用できません。
インスタンスアイデンティティロール ARN
インスタンスアイデンティティロール ARN は次の形式です。
arn:
aws-partition
:iam::account-number
:assumed-role/aws:ec2-instance/instance-id
例:
arn:
aws
:iam::0123456789012
:assumed-role/aws:ec2-instance/i-0123456789example
ARN の詳細については、「IAM ユーザーガイド」の「Amazon リソースネーム (ARN)」を参照してください。