Session Manager の追加サンプル IAM ポリシー - AWS Systems Manager

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Session Manager の追加サンプル IAM ポリシー

サポートする Session Manager ユーザーのアクセスシナリオ用のカスタム AWS Identity and Access Management (IAM) ポリシーの作成に役立つ、次のサンプルポリシーを参照してください。

例 1: コンソールでドキュメントへのアクセスを許可する

ユーザーが Session Manager コンソールを使用してセッションを開始する場合、カスタムドキュメントを指定できるようにすることができます。次の IAM ポリシーの例では、指定された AWS リージョン および AWS アカウントで SessionDocument- で始まる名前のドキュメントにアクセスする許可を付与します。

このポリシーを使用するには、独自の情報を含むそれぞれのリソースプレースホルダーの例を置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetDocument", "ssm:ListDocuments" ], "Resource": [ "arn:aws:ssm:region:account-id:document/SessionDocument-*" ], "Condition": { "BoolIfExists": { "ssm:SessionDocumentAccessCheck": "true" } } } ] }
注記

Session Manager コンソールは、セッションプリファレンスの定義に使用される Standard_StreamsessionType を持つセッションドキュメントのみをサポートします。詳細については、「セッションドキュメントスキーマ」を参照してください。

例 2: 特定のマネージドノードへのアクセスを制限

Session Manager を使用して、ユーザーが接続できるマネージドノードを定義する IAM ポリシーを作成できます。例えば、次のポリシーは、特定の 3 つのノードでセッションを開始、終了、再開するアクセス許可をユーザーに付与します。このポリシーは、指定されたノード以外のノードにユーザーが接続することを制限します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:us-east-2:123456789012:instance/i-1234567890EXAMPLE", "arn:aws:ec2:us-east-2:123456789012:instance/i-abcdefghijEXAMPLE", "arn:aws:ec2:us-east-2:123456789012:instance/i-0e9d8c7b6aEXAMPLE" ] }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession", "ssm:ResumeSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:userid}-*" ] } ] }

例 3: タグに基づいてアクセスを制限

特定のタグに基づいてマネージドノードへのアクセスを制限できます。次の例では、ユーザーは、ノードが Finance WebServer (Effect: Allow, Action: ssm:StartSession, ssm:ResumeSession) であるという条件で、任意のマネージドノード () でセッション (Resource: arn:aws:ec2:region:987654321098:instance/*) を開始および再開できますssm:resourceTag/Finance: WebServer。ユーザーがタグ付けされていない、またはFinance: WebServer 以外のタグ付けされた マネージドノードにコマンドを送信した場合、コマンド結果に AccessDenied が含まれます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:us-east-2:123456789012:instance/*" ], "Condition": { "StringLike": { "ssm:resourceTag/Finance": [ "WebServers" ] } } }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession", "ssm:ResumeSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:userid}-*" ] } ] }

複数のタグが付いたマネージドノードに対してユーザーがセッションを開始することを許可するIAM ポリシーを作成できます。以下のポリシーは、指定されたタグが両方とも適用されたマネージドノードに対してユーザーがセッションを開始することを許可します。ユーザーがこれら両方のタグが付いていないマネージドノードにコマンドを送信した場合、コマンド結果に AccessDenied が含まれます。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:StartSession" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag-key1":[ "tag-value1" ], "ssm:resourceTag/tag-key2":[ "tag-value2" ] } } } ] }

IAM ポリシーの作成の詳細については、「IAM ユーザーガイド」の「マネージドポリシーとインラインポリシー」を参照してください。マネージドノードへのタグ付けの詳細については、「Linux インスタンス用の Amazon EC2 ユーザーガイド」(内容は Windows と Linux のマネージドノードに適用) の「マネージドノードのタグ付け」と「Amazon EC2 リソースのタグ付け」を参照してください。マネージドノードで許可されていないルートレベルのコマンドに対するセキュリティ体制の強化方法の詳細については、 SSM Agent を介してルートレベルコマンドへのアクセスを制限する をご参照ください

例 4: ユーザーが開始したセッションのみを終了できるようにする

Session Manager には、 のフェデレーティッドユーザーがどのセッションを終了できるかを制御する 2 つの方法 AWS アカウント があります。

  • AWS Identity and Access Management (IAM) アクセス許可ポリシー{aws:userid}で 変数を使用します。フェデレーションユーザーは、開始したセッションのみを終了できます。フェデレーションユーザー以外のユーザーの場合は、{aws:userid} の代わりに変数 {aws:username} を使用します。

  • IAM アクセス許可ポリシーでタグによって提供される AWS タグを使用します。このポリシーには、 によって提供された特定のタグでタグ付けされたセッションのみをユーザーが終了できるようにする条件を含めます AWSこの方法は、フェデレーション ID を使用して へのアクセスを許可するものを含めて、すべてのアカウントで機能します AWS

方法 1: 変数を使用して TerminateSession 権限を付与する {aws:username}

次の IAM ポリシーでは、ユーザーはアカウントのすべてのセッションの ID を表示できます。ただし、ユーザーは開始したセッションでのみマネージドノードとインタラクトできます。次のポリシーが割り当てられているユーザーは、他のユーザーのセッションに接続したり、終了させることはできません。ポリシーは、このために変数 {aws:username} を使用します。

注記

この方法は、フェデレーション ID を使用して AWS へのアクセスを許可するアカウントでは機能しません。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:DescribeSessions" ], "Effect": "Allow", "Resource": [ "*" ] }, { "Action": [ "ssm:TerminateSession" ], "Effect": "Allow", "Resource": [ "arn:aws:ssm:*:*:session/${aws:username}-*" ] } ] }

方法 2: が提供するタグを使用して TerminateSession 権限を付与する AWS

IAM ポリシーに条件タグキー変数を含めることで、ユーザーが終了できるセッションを管理できます。この条件では、ユーザーがこれらの特定のタグキー変数と指定された値のいずれかまたは両方でタグ付けされたセッションのみを終了できることを指定します。

のユーザーがセッション AWS アカウント を開始すると、 は 2 つのリソースタグをセッションSession Managerに適用します。最初のリソースタグは aws:ssmmessages:target-id で、ユーザーが終了できるターゲットの ID を指定します。もう 1 つのリソースタグは aws:ssmmessages:session-id で、role-id:caller-specified-role-name 形式の値を持ちます。

注記

Session Manager は、この IAM アクセス制御ポリシーのカスタムタグをサポートしていません。以下に示すように AWS、 が提供するリソースタグを使用する必要があります。

aws:ssmmessages:target-id

このタグキーでポリシーの値としてマネージドノード ID を含めます。以下のポリシーブロックでは、この条件ステートメントはユーザーが 「i-02573cafcfEXAMPLE」 のノードのみを終了することを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:target-id": [ "i-02573cafcfEXAMPLE" ] } } } ] }

この TerminateSession アクセス許可が付与されていないセッションをユーザーが終了しようとすると、AccessDeniedException エラーが発生します。

aws:ssmmessages:session-id

このタグキーには、セッションを開始するリクエストの値として、セッション ID の変数が含まれます。

次の例は、発信者のタイプが User である場合のポリシーを示しています。aws:ssmmessages:session-id に指定する値は、ユーザーの ID です。この例では、AIDIODR4TAW7CSEXAMPLE は AWS アカウントのユーザーの ID を表します。でユーザーの ID を取得するには AWS アカウント、IAM コマンド を使用しますget-user。詳細については、IAM ユーザーガイドの AWS Identity and Access Management 「」セクションの「get-user」を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:session-id": [ "AIDIODR4TAW7CSEXAMPLE" ] } } } ] }

次の例は、発信者のタイプが AssumedRole である場合のポリシーを示しています。{aws:userid} 変数は、aws:ssmmessages:session-id に指定する値として使用できます。または、aws:ssmmessages:session-id に指定する値としてロール ID をハードコードすることもできます。ロール ID をハードコードする場合は、role-id:caller-specified-role-name 形式で値を指定する必要があります。たとえば、AIDIODR4TAW7CSEXAMPLE:MyRole と指定します。

重要

システムタグを適用するには、指定するロール ID には、Unicode 文字、0~9、スペース、_.:/=+-@、および \ のみを含めることができます。

のロールのロール ID を取得するには AWS アカウント、 get-caller-identity コマンドを使用します。詳細については、 AWS CLI 「 コマンドリファレンスget-caller-identity」の「」を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:session-id": [ "${aws:userid}*" ] } } } ] }

この TerminateSession アクセス許可が付与されていないセッションをユーザーが終了しようとすると、AccessDeniedException エラーが発生します。

aws:ssmmessages:target-id および aws:ssmmessages:session-id

また、この例に示すように、両方のシステムタグでタグ付けされたセッションをユーザーが終了できるようにする IAM ポリシーを作成することもできます。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:TerminateSession" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/aws:ssmmessages:target-id":[ "i-02573cafcfEXAMPLE" ], "ssm:resourceTag/aws:ssmmessages:session-id":[ "${aws:userid}*" ] } } } ] }

例 5: すべてのセッションにフル (管理) アクセスを許可する

以下の IAM ポリシーは、すべてのユーザーがすべてのノード用に作成したすべてのマネージドノードとすべてのセッションに対して、ユーザーが完全にインタラクトすることを許可します。組織の Session Manager のアクティビティを完全に制御する必要がある管理者にのみ付与されます。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:StartSession", "ssm:TerminateSession", "ssm:ResumeSession", "ssm:DescribeSessions", "ssm:GetConnectionStatus" ], "Effect": "Allow", "Resource": [ "*" ] } ] }