メニュー
AWS Identity and Access Management
ユーザーガイド

AWS サービスにロールを渡すアクセス権限をユーザーに許可する

AWS サービスをいくつも設定するには、そのサービスへの IAM ロールを渡す必要があります。これにより、サービスが後でロールの継承を行い、ユーザーの代わりにアクションを実行できるようになります。サービスにロールを渡すのはセットアップ時の 1 回限りで、サービスがロールを継承するたびに行うのではありません。たとえば、Amazon EC2 インスタンスで実行しているアプリケーションがあるとします。このアプリケーションには認証に使う一時的な認証情報と、AWS でアクションを実行するためのアプリケーション認証のアクセス権限が必要です。アプリケーションをセットアップする場合、こうした認証情報を提供するインスタンスを使用するため、EC2 にロールを渡す必要があります。そのロールに IAM ポリシーをアタッチして、インスタンスで実行するアプリケーションのアクセス権限を定義します。アプリケーションは、このロールが許可しているアクションを実行する必要があるたびに、ロールを引き受けます。

ユーザーがロール (とそのアクセス権限) を AWS サービスに渡すには、そのサービスにロールを渡す権限が必要になります。これは承認済みのユーザーだけが、アクセス権限を付与するロールでサービス設定ができるようにします。ユーザーが AWS サービスにロールを渡すには、IAM ユーザー、ロールまたはグループへの PassRole アクセスの許可を付与する必要があります。

サービスにリンクされたロールを作成する場合は、サービスにそのロールを渡すためのアクセス許可も必要になります。一部のサービスでは、そのサービスでアクションを実行する際にアカウント内にサービスにリンクされたロールが自動的に作成されます。たとえば Amazon EC2 Auto Scaling では、Auto Scaling グループを初めて作成する際に、AWSServiceRoleForAutoScaling というサービスにリンクされたロールが作成されます。PassRole のアクセス許可がない状態で Auto Scaling グループの作成を試みると、エラーが表示されます。サービスにリンクされたロールをサポートするサービスを確認するには、「IAM と連携する AWS サービス」を参照してください。アクション実行時にサービスにリンクされたロールを自動作成するサービスがどれか確認するには、[Yes] のリンクを選択し、そのサービス用のサービスにリンクされたロールのドキュメントを参照してください。

ユーザーは、ロールを使用してサービスにアクセス許可を割り当てる任意の API オペレーションで、パラメータとして ARN を渡すことができます。次に、そのサービスはユーザーに iam:PassRole 権限があるかどうか確認します。ユーザーが渡せるロールを承認済みのロールだけに制限するには iam:PassRole のアクセス権限と IAM のポリシーステートメントの Resources 要素をフィルターに掛けることができます。

例 1

インスタンスの起動時に、承認済みの一連のロールを Amazon EC2 サービスに渡すための権限をユーザーに付与したいと考えているとします。その場合、3 つの要素が必要です。

  • ロールに許可されている内容を定義し、ロールにアタッチしている IAM のアクセス権限ポリシーロールが実行しなければならない操作やロールが操作を実行する上で必要とするリソースのみにアクセス権限を制限します。AWS マネージド型またはユーザー定義の IAM アクセス権限ポリシーを使用できます。

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "A list of the permissions the role is allowed to use" ], "Resource": [ "A list of the resources the role is allowed to access" ] } }
  • ロールを引き受けられるサービスを許可するロールの信頼ポリシーたとえば、次の信頼ポリシーを UpdateAssumeRolePolicy アクションを使用するロールにアタッチできます。この信頼ポリシーは Amazon EC2 がロールを使用し、そのロールにアタッチしているアクセス権限の使用を許可します。

    { "Version": "2012-10-17", "Statement": { "Sid": "TrustPolicyStatementThatAllowsEC2ServiceToAssumeTheAttachedRole", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } }
  • 承認済みのロールのみをユーザーが渡せるように許可する、IAM ユーザーにアタッチしている IAM のアクセス許可ポリシーユーザーが渡すロールの詳細を得るため、通常 iam:PassRoleiam:GetRole と共に使用するようになっています。この例でユーザーが渡すことができるのは、指定されたアカウントに存在し、EC2-roles-for-XYZ- で始まる名前を持つロールに限ります。

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "arn:aws:iam::<account-id>:role/EC2-roles-for-XYZ-*" }] }

これでユーザーは割り当てられたロールで Amazon EC2 インスタンスを起動することができます。インスタンスで実行しているアプリケーションはインスタンスプロファイルのメタデータのロールで一時的な認証情報にアクセスすることができます。ロールにアタッチされたアクセス権限ポリシーは、インスタンスに許可する操作を定義します。

例 2

Amazon Relational Database Service (Amazon RDS) は拡張モニタリングと呼ばれる機能をサポートしています。この機能により、Amazon RDS はエージェントを使用してデータベースインスタンスをモニタリングできます。また、Amazon RDS は Amazon CloudWatch Logs ログにメトリクスを記録することもできます。この機能を有効にするには、サービスロールを作成して、メトリクスをモニタリングしログに書き込む権限を Amazon RDS に付与する必要があります。

Amazon RDS Enhanced Monitoring のロールを作成する

  1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

  2. [Roles] を選択し、続いて [Create role] を選択します。

  3. [AWS Service] ロールタイプ、[Amazon RDS Role for Enhanced Monitoring] サービスの順に選択します。続いて、[Next: Permissions] を選択します。

  4. [AmazonRDSEnhancedMonitoringRole] を選択してから、アクセス権限ポリシー、[Next: Review] の順に選択します。

  5. [Role name] に、このロールの目的を識別しやすくするロール名を入力します。ロール名は AWS アカウント内で一意でなければなりません。大文字と小文字は区別されません。たとえば、PRODROLEprodrole というロール名を両方作成することはできません。多くのエンティティによりロールが参照されるため、作成後にロール名を変更することはできません。

  6. (オプション) [Role description] に、新しいロールの説明を入力します。

  7. ロール情報を確認し、[Create role] を選択します。

ロールを引き受ける monitoring.rds.amazonaws.com サービスのアクセス権限を付与する信頼ポリシーをロールが自動的に取得します。その後、Amazon RDS は AmazonRDSEnhancedMonitoringRole ポリシーが許可するすべての操作を実行できるようになります。

Enhanced Monitoring を有効にするための権限を付与したいユーザーには、次のようにユーザーがロールを渡すことを許可するステートメントを含むポリシーが必要になります。アカウント番号を使用し、ロールの名前をステップ 3 で使用した名前に変更します。

{ "Sid": "PolicyStatementToAllowUserToPassOneSpecificRole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam:::role/RDS-Monitoring-Role" }

別のポリシーのステートメントとこのステートメントを組み合わせたり、独自のポリシーで使用することができます。RDS- で始まるロールをユーザーが渡せるように特定するには、リソース ARN にあるロールの名前をワイルドカードに変更することもできます。次の例をご覧ください。

"Resource": "arn:aws:iam:::role/RDS-*"