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

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

様々な AWS サービスを設定するには、ユーザーの代理としてサービスに許可されている内容を定義する IAM ロールをパスする必要があります。たとえば、AWS 認証情報を使用して Amazon EC2 インスタンスで実行するアプリケーションを提供するには、その認証情報を提供するインスタンスで使用できるようにロールを EC2 に渡します。ロールで必要なアクセス権限を付与する AWS Identity and Access Management (IAM) ポリシーをアタッチすることで、インスタンスで実行するアプリケーションにどの認証情報を許可するか定義します。

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

ユーザーがサービスへのアクセス許可を割り当てるロールを使用する API にロール ARN をパラメーターとして渡した場合、サービスはその操作を実行しているユーザーに iam:PassRole のアクセス権限があるか確認します。ユーザーが渡せるロールを承認済みのロールだけに制限するには iam:PassRole のアクセス権限と IAM のポリシーステートメントの Resources 要素をフィルターに掛けることができます。

例 1

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

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

    Copy
    { "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 がロールを使用し、そのロールにアタッチしているアクセス権限の使用を許可します。

    Copy
    { "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- で始まる名前を持つロールに限ります。

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

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

例 2

Amazon Relational Database Service (Amazon RDS) は、エージェントとレポートメトリクスを Amazon CloudWatch ログに対して使用する DB インスタンスをモニタリングするために Amazon RDS を有効にする Enhanced Monitoring という機能をサポートします。ユーザーが組織内のデータベースで Enhanced Monitoring を有効にするには、IAM を使用して Amazon RDS を設定する必要があります。そうすることでログをモニタリングしたりログにメトリクスを書き込むことができるようになります。Amazon RDS を設定しているユーザーにロールを作成しポリシーをアタッチするための権限が許可されている場合は、そのユーザーが Enhanced Monitoring 機能を Amazon RDS コンソールで使用し代わりにロールを作成することができます。ただし、この例ではユーザーにロールを作成する権限が許可されていないため、先にロールを作成しておく必要があります。次に Enhanced Monitoring を有効にする時に Amazon RDS のロールに対し渡すために必要な権限をユーザーに付与することができます。

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

  1. IAM コンソール (https://console.aws.amazon.com/iam/) にサインインします。

  2. [ロール] を選択してから [新しいロールの作成] を選びます。

  3. RDS-Monitoring-Role といったようなロールの名前を入力してから [次のステップ] を選択します。

  4. ロールタイプの選択ページの [AWS サービスロール] リストで [Amazon RDS Role for Enhanced Monitoring] を探し [選択] を選びます。

  5. Attach Policy ページで [AmazonRDSEnhancedMonitoringRole] を選択し [次のステップ] を選択したら [ロールの作成] を選びます。

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

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

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

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

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