Session Manager 的其他 IAM 政策範例 - AWS Systems Manager

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Session Manager 的其他 IAM 政策範例

請參閱下列範例政策,以協助您建立自訂 AWS Identity and Access Management (IAM) 政策以任何 Session Manager 使用者存取的情境。

範例 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 主控台僅支援 sessionTypeStandard_Stream 的工作階段文件 (用於定義工作階段偏好設定)。如需詳細資訊,請參閱 工作階段文件結構描述

範例 2:限制對特定受管節點的存取權

您可以建立 IAM 政策,以定義允許使用者使用 Session Manager 連線到哪些受管節點。例如,下列政策授予使用者在三個特定節點上啟動、結束和繼續其工作階段的許可。此政策會限制使用者連線至指定節點以外的節點。

注意
{ "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", "arn:aws:ssm:us-east-2:123456789012:document/SSM-SessionManagerRunShell" ] }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession", "ssm:ResumeSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:userid}-*" ] } ] }

範例 3:根據標籤限制受管節點存取

您可以根據特定標籤限制對受管節點的存取權。在下列範例中,允許使用者在任何受管理的節點 (Effect: Allow, Action: ssm:StartSession, ssm:ResumeSessionResource: arn:aws:ec2:region:987654321098:instance/*) 上啟動和恢復 session (),條件是 Finance WebServer (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}-*" ] }, { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ssm:us-east-2:123456789012:document/SSM-SessionManagerRunShell" ] } ] }

您可以建立 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" ] } } }, { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ssm:us-east-2:123456789012:document/SSM-SessionManagerRunShell" ] } ] }

如需有關建立 IAM 政策的詳細資訊,請參閱《IAM 使用者指南》中的受管政策和內嵌政策。如需標記受管節點的詳細資訊標記受管節點,請參閱 Amazon EC2 使用者指南中的和標記 Amazon EC2 資源 (內容適用Windows於Linux受管節點)。如需提升安全狀態,防範受管節點上未獲授權的根層級命令的詳細資訊,請參閱 限制透過 SSM Agent 存取根層級命令

範例 4:只允許使用者結束他們啟動的工作階段

Session Manager提供兩種方法來控制允許您中的聯合使用者結束 AWS 帳戶 的工作階段。

  • {aws:userid}在 AWS Identity and Access Management (IAM) 許可政策中使用變數。聯合身分使用者只能結束他們啟動的工作階段。對於非聯合身分使用者,請使用變數 {aws:username},而不要使用 {aws:userid}

  • 在 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 帳戶 啟動工作階段時,會將兩個資源標籤Session Manager套用至工作階段。第一個資源標籤是 aws:ssmmessages:target-id,您可以用來指定允許使用者結束之目標的 ID。另一個資源標籤是 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 節中的取得使用者

{ "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

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