委任管理者を使用して、オートメーションを実行する - AWS Systems Manager

委任管理者を使用して、オートメーションを実行する

デフォルトでは、オートメーションを実行すると、オートメーションは実行を開始した AWS Identity and Access Management (IAM) ユーザーのコンテキストで実行されます。たとえば、IAM ユーザーアカウントに管理者権限がある場合、このオートメーションは、管理者権限と、オートメーションで設定されているリソースに対するフルアクセスを使用して実行されます。セキュリティのベストプラクティスとして、オートメーションは、AmazonSSMAutomationRole 管理ポリシーで設定されている IAM サービスロール (継承ロールとも呼ばれる) を使用して実行することをお勧めします。IAM サービスロールを使用したオートメーションの実行は、委任管理者と呼ばれます。

サービスロールを使用すると、AWS リソースに対してオートメーションを実行することはできますが、オートメーションを実行したユーザーによる、それらのリソースに対するアクセスは制限されます (またはアクセスできません)。たとえば、サービスロールを設定後、自動化でそのロールを使用して、1 つ以上の EC2 インスタンスを再起動できます。オートメーションによってインスタンスは再起動されますが、ユーザーがそのサービスロールを使用して、そのインスタンスにアクセスすることはできません。

オートメーションを実行する際、ランタイムにサービスロールを指定するか、カスタムのオートメーションドキュメントを作成して、ドキュメントで直接サービスロールを指定することができます。ランタイム時または自動化ドキュメントでサービスロールを指定した場合、サービスは、指定したサービスロールのコンテキストで実行されます。サービスロールを指定しない場合、システムは、ユーザーのコンテキストで一時セッションを作成し、オートメーションを実行します。

注記

オートメーションを 12 時間以上実行する場合は、サービスロールを指定する必要があります。ユーザーのコンテキストで長時間稼働するオートメーションを開始すると、ユーザーの一時セッションの有効期限は 12 時間後に切れます。

委任管理者は、AWS リソースの昇格されたセキュリティと制御を保証します。また、アクションは複数の IAM リソースではなく、主要サービスロールのリソースに対して実行されているため、監査プロセスを強化することができます。

組織内で委任管理者が作業を実行する方法を適切に表現するために、このトピックでは、これらのタスクが組織のユーザー 3 名によって実行されると想定してタスクを実行する方法について説明します。

  • テスト用の IAM ユーザーアカウント (AutomationRestrictedOperator) を作成する (管理者)。

  • 自動化に必要な IAM サービスロールを作成する (管理者)。

  • サービスロールを指定するシンプルな自動化ドキュメント (既存の自動化ドキュメントに基づく) を作成する (SSM ドキュメントの作成者)。

  • テストユーザーとしてオートメーションを実行する (制限付きユーザー)。

組織によっては、これらの 3 つのタスクはすべて、同じユーザーによって実行されることがありますが、別のロールを指定することで、組織の構成が複雑な場合でも委任管理者がセキュリティを強化する方法を示します。

重要

セキュリティのベストプラクティスとして、これらのタスクをひとりで実行する管理者であっても、オートメーションを実行するサービスロールを常に使用することをお勧めします。

このセクションの手順は、他の AWS ガイドのトピック、または他の Systems Manager トピックにリンクされています。このトピックの手順の場所を見失わないように、他のトピックへのリンクはウェブブラウザの新しいタブで開くことをお勧めします。

テストユーザーアカウントを作成する

このセクションでは、アクセス権限が制限されたテスト用の IAM ユーザーアカウントを作成する方法について説明します。ユーザーは、このアクセス許可セットを使用してオートメーションを実行できますが、オートメーションの対象となる AWS リソースにアクセスすることはできません。また、オートメーションの結果を表示することもできます。カスタムの IAM 権限ポリシーを作成後、ユーザーアカウントを作成し、アクセス権限を割り当てます。

IAM テストユーザーを作成する

  1. アクセス許可ポリシー (OperatorRestrictedPermissions) を作成します。新しい IAM 権限ポリシーの作成方法の詳細については、IAM ユーザーガイド の「IAM ポリシーの作成 (コンソール)」を参照してください。JSON タブでポリシーを作成し、次の権限セットを指定します。

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:DescribeAutomationExecutions", "ssm:DescribeAutomationStepExecutions", "ssm:DescribeDocument", "ssm:GetAutomationExecution", "ssm:GetDocument", "ssm:ListDocuments", "ssm:ListDocumentVersions", "ssm:StartAutomationExecution" ], "Resource":"*" } ] }
  2. 新しい IAM ユーザーアカウント (AutomationRestrictedOperator) を作成します。IAM ユーザーの作成方法の詳細については、IAM ユーザーガイド の「IAM ユーザーの作成 (コンソール)」を参照してください。プロンプトが表示されたら、[既存のポリシーを直接アタッチします] を選択し、先ほど作成したポリシーを選択します。

  3. ユーザー名、パスワード、[Console login link (コンソールログインのリンク)] をメモしておきます。このトピックの後半で、このアカウントにログインします。

自動化に必要な IAM サービスロールを作成する

次の手順は、サービスロールの作成や、このロールを信頼するための自動化の設定に役立つ他のトピックにリンクしています。

サービスロールを作成し、自動化でこのロールを信頼するには

  1. 自動化サービスロールを作成します。詳細については、タスク 1: 自動化のサービスロールを作成する を参照してください。

  2. このサービスロールの Amazon リソースネーム (ARN) をメモします。この ARN は次の手順で指定します。

カスタムの自動化ドキュメントの作成

このセクションでは、EC2 インスタンスを再起動するカスタム自動化ドキュメントを作成する方法について説明します。AWS は、インスタンスを再起動するための AWS-RestartEC2Instance と呼ばれるデフォルトの SSM ドキュメントを提供します。次の手順では、独自に作成する際にドキュメントにサービスロールを入力する方法を示す目的で、ドキュメントの内容をコピーします。ドキュメントで直接サービスロールを指定すれば、ドキュメントを実行するユーザーに iam:PassRole 権限は不要です。iam:PassRole 権限がない場合、ユーザーは、AWS でサービスロールを使用することはできません。

カスタムの自動化ドキュメントを作成するには

  1. https://console.aws.amazon.com/systems-manager/ で AWS Systems Manager コンソールを開きます。

  2. ナビゲーションペインで、[ドキュメント] を選択します。

    -または-

    AWS Systems Manager ホームページが最初に開く場合は、メニューアイコン ( ) を選択してナビゲーションペインを開き、[ドキュメント] を選択します。

  3. [Create document] を選択します。

  4. [名前] フィールドに、ドキュメントの名前 (例: Restart-EC2InstanceDemo) を入力します。

  5. [Document type] リストで、[Automation document] を選択します。

  6. [コンテンツ] セクションで [JSON] を選択し、次の内容を貼り付けます。[AssumeRoleARN] を前述の手順で作成したサービスロールの ARN に置き換えます。

    { "description": "Restart EC2 instances(s)", "schemaVersion": "0.3", "assumeRole": "AssumeRoleARN", "parameters": { "InstanceId": { "type": "StringList", "description": "(Required) EC2 Instance to restart" } }, "mainSteps": [ { "name": "stopInstances", "action": "aws:changeInstanceState", "inputs": { "InstanceIds": "{{ InstanceId }}", "DesiredState": "stopped" } }, { "name": "startInstances", "action": "aws:changeInstanceState", "inputs": { "InstanceIds": "{{ InstanceId }}", "DesiredState": "running" } } ] }
  7. [Create document] を選択します。

カスタムの自動化ドキュメントを実行する

次の手順では、このトピックの前半で作成した制限付きオペレーターロールを使用して、先ほど作成したドキュメントを実行する方法について説明します。IAM アカウントのアクセス権限ではドキュメントを表示して実行することができるため、このユーザーは、前半で作成したドキュメントを実行することができます。ただし、このオートメーションで再起動するインスタンスにログオンすることはできません。

  1. https://console.aws.amazon.com/ec2/ で、次のオートメーションを使用して再起動する 1 つ以上のインスタンスのインスタンス ID をコピーします。

  2. AWS マネジメントコンソール からサインアウトしてから、前半でコピーした、テストユーザーアカウントの [Console login link] (コンソールログインのリンク)] を使用して、サインインし直します。

  3. https://console.aws.amazon.com/systems-manager/ で AWS Systems Manager コンソールを開きます。

  4. ナビゲーションペインで [自動化] を選択します。

    -または-

    AWS Systems Manager ホームページが最初に開く場合は、メニューアイコン ( ) を選択してナビゲーションペインを開き、[自動化] を選択します。

  5. [Execute automation] を選択します。

  6. このトピックの前半で作成したカスタムの自動化ドキュメントを選択します。

  7. [Document details] セクションで、[Document version] が [1 (Default)] に設定されていることを確認します。

  8. [次へ] を選択します。

  9. Execution Mode (実行モード)] セクションで、[Simple execution (シンプルな実行)] を選択します。

  10. [Input parameters (入力パラメータ)] セクションに、再起動するインスタンス ID を 1 つ以上入力し、[Execute (実行)] を選択します。

[Execution details (実行の詳細)] は、オートメーションのステータスを表しています。ステップ 1 では、インスタンスを停止します。ステップ 2 では、インスタンスを開始します。