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

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

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

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

ノードの ID を含む IAM ユーザーポリシーを作成することで、特定のマネージドノードへのアクセスを制限できます。以下の例では、ユーザーは 3 つの特定のマネージドノードへのみ Session Manager アクセスが許可されており、それらのノード上で自分のセッションのみを終了することが許可されます。ユーザーが他のマネージドノードにコマンドを送信したり、他のセッションを終了しようとした場合、コマンド結果に AccessDenied が含まれます。

{ "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:username}-*" ] } ] }

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

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

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

複数のタグが付いたマネージドノードに対してユーザーがセッションを開始することを許可する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 を介してルートレベルコマンドへのアクセスを制限する をご参照ください

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

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

  • AWS Identity and Access Management (IAM) アクセス権限ポリシーで変数 {aws:username} を使用します。ユーザーは、開始したセッションのみを終了できます。この方法は、フェデレーション ID を使用して AWS へのアクセスを許可するアカウントでは機能しません。フェデレーション ID は {aws:userid} の代わりに変数 {aws:username} を使用します。

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

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

次の 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 アカウント のユーザーがセッションを開始すると、Session Manager は 2 つのリソースタグをセッションに適用します。最初のリソースタグは 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 を表します。AWS アカウント のユーザーの ID を取得するには、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、スペース、_.:/=+-@、および \ のみを含めることができます。

AWS アカウント のロールのロール ID を取得するには、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":[ "instance-id" ], "ssm:resourceTag/aws:ssmmessages:session-id":[ "${aws:username}-*" ] } } } ] }

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

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

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