AWS Systems Manager 身分型政策範例 - AWS Systems Manager

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

AWS Systems Manager 身分型政策範例

依預設,AWS Identity and Access Management (IAM) 實體 (使用者和角色) 不具備建立或修改 AWS Systems Manager 資源的許可。他們也無法使用 Systems Manager 主控台、AWS Command Line Interface (AWS CLI) 或 AWS API 執行任務。管理員必須建立 IAM 政策,授與使用者和角色在指定資源上執行特定 API 操作所需的許可。管理員接著必須將這些政策連接至需要這些許可的使用者或群組。

下列的許可政策範例,可讓使用者刪除美國東部 (俄亥俄) (us-east-2) AWS 區域 中名稱以 MyDocument- 開頭的文件。

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "ssm:DeleteDocument" ], "Resource" : [ "arn:aws:ssm:us-east-2:111122223333:document/MyDocument-*" ] } ] }

若要了解如何使用這些範例 JSON 政策文件建立 IAM 身分型政策,請參閱《IAM 使用者指南》中的建立 IAM 政策

政策最佳實務

身分型政策會判斷您帳戶中的某個人員是否可以建立、存取或刪除 Systems Manager 資源。這些動作可能會讓您的 AWS 帳戶 產生費用。當您建立或編輯身分型政策時,請遵循下列準則及建議事項:

  • 開始使用 AWS 受管政策並朝向最低許可許可的目標邁進 – 若要開始授予許可給使用者和工作負載,請使用 AWS 受管政策,這些政策會授予許可給許多常用案例。它們可在您的 AWS 帳戶 中使用。我們建議您定義特定於使用案例的 AWS 客戶管理政策,以便進一步減少許可。如需詳細資訊,請參閱 IAM 使用者指南中的 AWS 受管政策任務職能的 AWS 受管政策

  • 套用最低許可許可 – 設定 IAM 政策的許可時,請僅授予執行任務所需的許可。為實現此目的,您可以定義在特定條件下可以對特定資源採取的動作,這也稱為最低許可許可。如需使用 IAM 套用許可的詳細資訊,請參閱 IAM 使用者指南中的 IAM 中的政策和許可

  • 使用 IAM 政策中的條件進一步限制存取權 – 您可以將條件新增至政策,以限制動作和資源的存取。例如,您可以撰寫政策條件,指定必須使用 SSL 傳送所有請求。您也可以使用條件來授予對服務動作的存取權,前提是透過特定 AWS 服務 (例如 AWS CloudFormation) 使用條件。如需詳細資訊,請參閱《IAM 使用者指南》中的 IAM JSON 政策元素:條件

  • 使用 IAM Access Analyzer 驗證 IAM 政策,確保許可安全且可正常運作 – IAM Access Analyzer 驗證新政策和現有政策,確保這些政策遵從 IAM 政策語言 (JSON) 和 IAM 最佳實務。IAM Access Analyzer 提供 100 多項政策檢查及切實可行的建議,可協助您編寫安全且實用的政策。如需詳細資訊,請參閱 IAM 使用者指南中的 IAM Access Analyzer 政策驗證

  • 需要多重要素驗證 (MFA) – 如果存在需要 AWS 帳戶中 IAM 使用者或根使用者的情況,請開啟 MFA 提供額外的安全性。若要在呼叫 API 操作時請求 MFA,請將 MFA 條件新增至您的政策。如需詳細資訊,請參閱 IAM 使用者指南中的設定 MFA 保護的 API 存取

有關 IAM 中最佳實務的詳細資訊,請參閱 IAM 使用者指南中的 IAM 安全最佳實務

使用 Systems Manager 主控台

若要存取 Systems Manager 主控台,您必須擁有最低的一組許可。這些許可必須允許您列出和檢視您 AWS 帳戶 中 Systems Manager 資源和其他資源的詳細資訊。

若要在 Systems Manager 主控台充分使用 Systems Manager,您必須有下列服務的許可:

  • AWS Systems Manager

  • Amazon Elastic Compute Cloud (Amazon EC2)

  • AWS Identity and Access Management (IAM)

您可以使用下列政策陳述式,授予必要許可:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:*", "ec2:describeInstances", "iam:ListRoles" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "ssm.amazonaws.com" } } } ] }

如果您建立比最低必要許可更嚴格的身分型政策,則對於具有該政策的 IAM 實體 (使用者或角色) 而言,主控台就無法如預期運作。

對於僅呼叫 AWS CLI 或 AWS API 的使用者,您不需要允許其最基本主控台許可。反之,只需允許存取符合您嘗試執行之 API 操作的動作就可以了。

允許使用者檢視他們自己的許可

此範例會示範如何建立政策,允許 IAM 使用者檢視連接到他們使用者身分的內嵌及受管政策。此政策包含在主控台上,或是使用 AWS CLI 或 AWS API 透過編寫程式的方式完成此動作的許可。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

客戶受管政策範例

您可以建立獨立的政策,在您自己的 AWS 帳戶 進行管理。我們將這些稱為客戶受管政策。您可以將這些政策連接到您 AWS 帳戶 中的多個委託人實體。將政策連接到主體實體時,便向實體授予了政策中定義的許可。如需詳細資訊,請參閱《IAM 使用者指南》中的客戶受管政策範例

下列使用者政策範例授予執行各種 Systems Manager 動作的許可。使用這些政策來限制 IAM 實體 (使用者或角色) 的 Systems Manager 存取。這些政策會在您執行 Systems Manager API、AWS 開發套件或 AWS CLI 中的動作時運作。使用主控台的使用者,需要授予專屬於主控台的額外許可。如需更多詳細資訊,請參閱 使用 Systems Manager 主控台

注意

所有範例皆使用美國西部 (奧勒岡) 區域 (us-west-2) 並包含虛構帳戶 ID。不應在 AWS 公有文件 (以 AWS-* 開頭的文件) 的 Amazon Resource Name (ARN) 中指定帳戶 ID。

範例

範例 1:允許使用者在單一區域執行 Systems Manager 操作

下列範例會授予許可,僅在美國東部 (俄亥俄) 區域 (us-east-2) 執行 Systems Manager 操作:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "ssm:*" ], "Resource" : [ "arn:aws:ssm:us-east-2:aws-account-ID:*" ] } ] }

範例 2:允許使用者列出單一區域的文件

以下範例會授予許可,列出在美國東部 (俄亥俄) 區域 (us-east-2) 中所有以 Update 開頭的文件名稱:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "ssm:ListDocuments" ], "Resource" : [ "arn:aws:ssm:us-east-2:aws-account-ID:document/Update*" ] } ] }

範例 3:允許使用者使用特定 SSM 文件,以在特定受管節點上執行命令

以下範例為 IAM 政策允許使用者美國東部 (俄亥俄) 區域 (us-east-2) 中執行以下操作:

  • 列出 Systems Manager 文件 (SSM 文件) 和文件版本。

  • 查看文件的詳細資訊。

  • 使用此政策中指定的文件傳送命令。文件的名稱取決於以下項目。

    arn:aws:ssm:us-east-2:aws-account-ID:document/Systems-Manager-document-name
  • 將命令傳送到三個節點。節點取決於第二個 Resource 區段中的下列項目。

    "arn:aws:ec2:us-east-2:aws-account-ID:instance/i-02573cafcfEXAMPLE", "arn:aws:ec2:us-east-2:aws-account-ID:instance/i-0471e04240EXAMPLE", "arn:aws:ec2:us-east-2:aws-account-ID:instance/i-07782c72faEXAMPLE"
  • 命令傳送後查看其詳細資訊。

  • 在 Automation 中啟動和停止工作流程,AWS Systems Manager 功能。

  • 取得有關 Automation 工作流程的資訊。

如果想要授予使用者許可,讓他們可使用此文件來在使用者有權存取的任何節點上傳送命令,您可以在 Resource 區段中指定與以下類似的項目,並移除其他節點項目。以下範例會使用美國東部 (俄亥俄) 區域 (US-east-2)。

"arn:aws:ec2:us-east-2:*:instance/*"
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:ListDocuments", "ssm:ListDocumentVersions", "ssm:DescribeDocument", "ssm:GetDocument", "ssm:DescribeInstanceInformation", "ssm:DescribeDocumentParameters", "ssm:DescribeInstanceProperties" ], "Effect": "Allow", "Resource": "*" }, { "Action": "ssm:SendCommand", "Effect": "Allow", "Resource": [ "arn:aws:ec2:us-east-2:aws-account-ID:instance/i-02573cafcfEXAMPLE", "arn:aws:ec2:us-east-2:aws-account-ID:instance/i-0471e04240EXAMPLE", "arn:aws:ec2:us-east-2:aws-account-ID:instance/i-07782c72faEXAMPLE", "arn:aws:ssm:us-east-2:aws-account-ID:document/Systems-Manager-document-name" ] }, { "Action": [ "ssm:CancelCommand", "ssm:ListCommands", "ssm:ListCommandInvocations" ], "Effect": "Allow", "Resource": "*" }, { "Action": "ec2:DescribeInstanceStatus", "Effect": "Allow", "Resource": "*" }, { "Action": "ssm:StartAutomationExecution", "Effect": "Allow", "Resource": [ "arn:aws:ssm:us-east-2:aws-account-ID:automation-definition/*" ] }, { "Action": "ssm:DescribeAutomationExecutions", "Effect": "Allow", "Resource": [ "*" ] }, { "Action": [ "ssm:StopAutomationExecution", "ssm:GetAutomationExecution" ], "Effect": "Allow", "Resource": [ "*" ] } ] }

根據標籤來檢視 Systems Manager 文件

您可以在身分型政策中使用條件,來根據標籤控制存取 Systems Manager 資源。此範例會示範如何建立政策,允許檢視 SSM 文件。但是,只有在文件標籤 Owner 值是該使用者的使用者名稱時,才會授予許可。此政策也會授予在主控台完成此動作的必要許可。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListDocumentsInConsole", "Effect": "Allow", "Action": "ssm:ListDocuments", "Resource": "*" }, { "Sid": "ViewDocumentIfOwner", "Effect": "Allow", "Action": "ssm:GetDocument", "Resource": "arn:aws:ssm:*:*:document/*", "Condition": { "StringEquals": {"ssm:ResourceTag/Owner": "${aws:username}"} } } ] }

您可以將此政策連接到您帳戶中的 使用者。如果名為 richard-roe 的使用者嘗試檢視 Systems Manager 文件,則必須將文件標記為 Owner=richard-roeowner=richard-roe。否則,其會被拒絕存取。條件標籤鍵 Owner 符合 Ownerowner,因為條件索引鍵名稱不區分大小寫。如需詳細資訊,請參閱《IAM 使用者指南》中的 IAM JSON 政策元素:條件