方法 2: IAM を使用して、オートメーションのロールを設定する - AWS Systems Manager

方法 2: IAM を使用して、オートメーションのロールを設定する

AWS Systems Manager の一機能であるオートメーションのサービスロールを作成する必要がある場合、次のいずれかのタスクを完了します。オートメーションにサービスロールが必要な場合の詳細については、「オートメーションの設定」を参照してください 。

タスク 1: 自動化のサービスロールを作成する

次の手順を使用して、Systems Manager Automation のサービスロールを作成 (または、ロールを継承) します。

注記

このロールは、AWS-CreateManagedLinuxInstance ランブックなどのランブックでも使用できます。ランブックでこのロール、または AWS Identity and Access Management (IAM) ロールの Amazon リソースネーム (ARN) を使用すると、オートメーションにより新しいインスタンスの起動やユーザーに代わってアクションを実行するなどのアクションをお客様の環境で実行できます。

IAM ロールを作成し、Automation がそのロールを引き受けることを許可します。

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで [Roles] を選択し、続いて [Create role] を選択します。

  3. [Select type of trusted entity ] (信頼されたエンティティの種類を選択) の下で、[AWS service ] (AWS サービス) を選択します。

  4. [Choose a use case (ユースケースの選択)] セクションで、[Systems Manager] を選択し、[Next: Permissions (次へ: アクセス許可)] を選択します。

  5. [Attached permissions policy] ページで [AmazonSSMAutomationRole] を検索して選択したら、[Next: Review] を選択します。

  6. [Review (確認)] ページの [Role name (ロール名)] ボックスに名前を入力し、続いて説明を入力します。

  7. [ロールの作成] を選択します。[Roles] (ロール) ページが再度表示されます。

  8. [Roles] ページで作成したロールを選択して、[Summary] ページを開きます。[ロール名] と [ロール ARN] を書き留めます。ロール ARN は、次の手順で iam:PassRole ポリシーを IAM アカウントにアタッチするときに指定します。ランブックでロール名と ARN を指定することもできます。

注記

AmazonSSMAutomationRole ポリシーは、アカウント内の一部の AWS Lambda 関数に Automation ロールのアクセス許可を割り当てます。これらの関数は「Automation」で始まります。Lambda 関数で Automation を使用する予定の場合、Lambda ARN には以下の形式を使用する必要があります。

"arn:aws:lambda:*:*:function:Automation*"

この形式を使用していない ARN を持つ既存の Lambda 関数がある場合、オートメーションロールに追加で AWSLambdaRole ポリシーなどの Lambda ポリシーをアタッチする必要があります。追加のポリシーまたはロールは、内の Lambda 関数へのより広範なアクセスを許可する必要がありますAWS アカウント

サービスロールを作成した後は、クロスサービスの混乱による代理の問題を防ぐために、信頼ポリシーを修正するようにお勧めします。「混乱した代理」問題は、アクションを実行するためのアクセス許可を持たないエンティティが、より特権のあるエンティティにアクションの実行を強制できてしまう場合に生じる、セキュリティ上の問題です。AWS では、サービス間でのなりすましが、混乱した代理問題を生じさせることがあります。サービス間でのなりすましは、1 つのサービス (呼び出し元サービス) が、別のサービス (呼び出し対象サービス) を呼び出すときに発生する可能性があります。呼び出し元サービスは、本来ならアクセスすることが許可されるべきではない方法でその許可を使用して、別の顧客のリソースに対する処理を実行するように操作される場合があります。これを防ぐため、AWS では、アカウント内のリソースへのアクセス権が付与されたサービスプリンシパルですべてのサービスのデータを保護するために役立つツールを提供しています。

リソースポリシー内の aws:SourceArnaws:SourceAccount のグローバル条件コンテキストキーを使用して、リソースについてオートメーションが別のサービスに付与するアクセス許可を、制限することをお勧めします。Amazon S3 バケットの ARN などのアカウント ID が、aws:SourceArn 値に含まれていない場合、アクセス許可を制限するためには、これら両方のグローバル条件コンテキストキーを使用する必要があります。同じポリシーステートメントでこれらのグローバル条件コンテキストキーの両方を使用し、アカウント ID にaws:SourceArn の値が含まれていない場合、aws:SourceAccount 値と aws:SourceArn 値の中のアカウントには、同じアカウント ID を使用する必要があります。クロスサービスのアクセスにリソースを 1 つだけ関連付けたい場合は、aws:SourceArn を使用します。クロスサービスが使用できるように、アカウント内の任意のリソースを関連づけたい場合は、aws:SourceAccount を使用します。aws:SourceArn の値は、オートメーション実行の ARN である必要があります。リソースの ARN 全体が不明または複数のリソースを指定する場合、ARN の未知部分にワイルドカード (*) が付いた aws:SourceArn グローバルコンテキスト条件キー を使用します。例えば、arn:aws:ssm:*:123456789012:automation-execution/* です。

以下の例はオートメーション用に aws:SourceArnaws:SourceAccount のグローバル条件コンテキストキーを使用して「混乱した使節の問題」を防止する方法を示します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ssm.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:ssm:*:123456789012:automation-execution/*" } } } ] }

ロールの信頼ポリシーを変更するには

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで [Roles] (ロール) を選択します。

  3. アカウントのロールのリストから、オートメーションのサービスロールの名前を選択します。

  4. [Trust relationships] タブを選択し、続いて [Edit trust relationship] を選択します。

  5. オートメーション用の aws:SourceArnaws:SourceAccount のグローバル条件コンテキストキーを使用して「混乱した代理の問題」を防止するために信頼ポリシーを修正します。

  6. [Update Trust Policy] (信頼ポリシーの更新) をクリックし、変更を保存します。

(オプション) 他の AWS のサービスを呼び出すためのオートメーションインラインポリシーを追加する

IAM サービスロールを使用して他の AWS のサービスを呼び出すオートメーションを実行する場合は、それらのサービスを呼び出すためのアクセス許可をサービスロールに設定する必要があります。この要件は、AWS-ConfigureS3BucketLoggingAWS-CreateDynamoDBBackupAWS-RestartEC2Instance ランブックなど、すべての AWS オートメーションランブック (AWS-* ランブック) に適用されます。この要件は、他のサービスを呼び出すアクションを使用して他の AWS のサービスを呼び出すように作成したカスタムランブックにも適用されます。たとえば、aws:executeAwsApiaws:CreateStack、または aws:copyImage などのアクションを使用する場合は、それらのサービスを呼び出すためのアクセス許可を持つサービスロールを設定する必要があります。ロールに IAM インラインポリシーを追加することで、他の AWS のサービスへのアクセス許可を有効にできます。

ユーザーまたはロールのインラインポリシーを埋め込むには (IAM コンソール)

  1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで [Roles (ロール) ] を選択します。

  3. リストで編集するロールの名前を選択します。

  4. [Permissions] タブを選択します。

  5. [Add inline policy] を選択します。

  6. [JSON] タブを選択します。

  7. 呼び出したい AWS のサービスの JSON ポリシードキュメントを入力します。JSON ポリシードキュメントの 2 つの例を以下に示します。

    Amazon S3 PutObject と GetObject の例

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

    Amazon EC2 CreateSnapshot と DescribeSnapShots の例

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"ec2:CreateSnapshot", "Resource":"*" }, { "Effect":"Allow", "Action":"ec2:DescribeSnapshots", "Resource":"*" } ] }

    IAM ポリシー言語の詳細については、IAM ユーザーガイドの「IAM JSON ポリシーリファレンス」を参照してください。

  8. 完了したら、[ポリシーの確認] を選択します。構文エラーがある場合は、Policy Validator (ポリシー検証) によってレポートされます。

  9. [ポリシーの確認] ページで、作成するポリシーの [名前] を入力します。ポリシーの [概要] を確認して、ポリシーで許可されている権限を確認します。次に [ポリシーの作成] を選択して作業を保存します。

  10. インラインポリシーを作成した後は、自動的にロールに埋め込まれます。

タスク 2: iam:PassRole ポリシーをオートメーションロールにアタッチする

以下の手順を使用して、iam:PassRole ポリシーを Automation サービスロールにアタッチします。これにより、オートメーションを実行する際に、オートメーションサービスによって他のサービスまたは Systems Manager 機能にロールが渡されるようになります。

iam:PassRole ポリシーを自動化ロールにアタッチするには

  1. 作成したロールの [Summary] ページで [Permissions] タブを選択します。

  2. [Add inline policy] を選択します。

  3. [ポリシーの作成] ページの [Visual editor] (ビジュアルエディタ) タブを選択します。

  4. [サービス]、[IAM] の順に選択します。

  5. [アクションの選択] を選択します。

  6. [Filter actions (フィルタアクション)] テキストボックスに「PassRole」と入力し、[PassRole] オプションを選択します。

  7. [リソース] を選択します。[Specific] (固有) が選択されていることを確認し、[Add ARN] (ARN の追加) を選択します。

  8. [Specify ARN for role] (ロールの ARN の指定) フィールドに、タスク 1 の終わりでコピーした自動化ロールの ARN を貼り付けます。システムによって、[アカウント] と [Role name with path (ロール名とパス)] フィールドが入力されます。

    注記

    オートメーションサービスロールで IAM インスタンスプロファイルロールを EC2 インスタンスにアタッチする場合は、IAM インスタンスプロファイルロールの ARN を追加する必要があります。これにより、オートメーションサービスロールが IAM インスタンスプロファイルのロールをターゲット EC2 インスタンスに渡すことができます。

  9. [Add] (追加) をクリックします。

  10. [ポリシーの確認] を選択します。

  11. [Review Policy (ポリシーの確認)] ページに名前を入力し、[Create Policy (ポリシーの作成)] を選択します。

タスク 3: オートメーションへのユーザーのアクセスを設定する

AWS Identity and Access Management (IAM) ユーザーアカウント、グループ、またはロールに管理者権限が割り当てられている場合は、Systems Manager Automation にアクセスできます。管理者アクセス許可がない場合は、管理者に AmazonSSMFullAccess 管理ポリシーの割り当てを依頼するか、IAM アカウント、グループ、またはロールに同等のアクセス許可を付与するポリシーの割り当てを依頼してください。

自動化を使用するようにユーザーアカウントを設定するには、以下の手順を使用します。選択したユーザーアカウントには、自動化を設定して実行する権限が付与されます。新規ユーザーアカウントの作成が必要な場合は、IAM ユーザーガイドの「AWS アカウント での IAM ユーザーの作成」を参照してください。

ユーザーアクセスを設定し、iam:PassRole ポリシーをユーザーアカウントにアタッチするには

  1. IAM のナビゲーションペインで、[ユーザー] を選択し、設定するユーザーアカウントを選択します。

  2. [Permissions (アクセス許可)] タブのポリシーリストで、AmazonSSMFullAccess ポリシーがリストにあるか、またはアカウントに Systems Manager へのアクセス許可を与える同等のポリシーがあるかどうかを確認します。

  3. [Add inline policy] を選択します。

  4. [ポリシーの作成] ページで、[ビジュアルエディタ]、[サービスの選択] の順に選択します。

  5. 検索ボックスに [IAM] と入力します。または、下にスクロールしてページの下部で [IAM] を見つけて、[IAM] を選択します。

  6. [アクション] では、検索ボックスに PassRole と入力して、[PassRole] をクリックします。

  7. [リソース] セクションを展開して、[ARN を追加] を選択し、タスク 1 の最後にコピーした Automation サービスロールの ARN を貼り付け、[追加] を選択します。

  8. [ポリシーの確認] を選択します。

  9. [ポリシーの確認] ページでポリシーの [名前] を入力し、[ポリシーの作成] を選択します。

Automation に必要なロールの設定が完了しました。ランブックでオートメーションサービスロール ARN を使用できるようになりました。