限制對 的存取 Parameter Store 使用 IAM 政策的參數 - AWS Systems Manager

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

限制對 的存取 Parameter Store 使用 IAM 政策的參數

您可以使用 AWS Identity and Access Management (IAM) 限制對 AWS Systems Manager 參數的存取。更具體地說,您可以建立 IAM 政策來限制對下列 API 操作的存取:

使用 IAM 政策限制 Systems Manager 參數的存取時,建議您建立並使用限制性 IAM 政策。例如,下列政策可讓使用者針對有限的資源集呼叫 DescribeParametersGetParameters API 操作。這表示使用者可以取得相關資訊,以及使用以 prod-* 開頭的所有參數。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }
重要

如果使用者擁有路徑的存取權限,則該使用者可存取該路徑的所有層級。例如,如果使用者擁有存取路徑 /a 的許可,則該使用者也可以存取 /a/b。即使使用者在 IAM 中明確遭到拒絕存取參數 /a/b,他們仍然可以遞迴呼叫 GetParametersByPath Word API操作/a並檢視 /a/b

對於信任的管理員,您可以使用類似下列範例的政策來提供所有 Systems Manager 參數 API 操作的存取權。此政策可讓使用者完整存取所有以 dbserver-prod-* 開頭的生產參數。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:GetParameterHistory", "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter", "ssm:DeleteParameters" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/dbserver-prod-*" }, { "Effect": "Allow", "Action": "ssm:DescribeParameters", "Resource": "*" } ] }

拒絕許可

每個 API 都是唯一的,並且具有您可以個別允許或拒絕的不同操作和許可。任何政策中的明確拒絕會覆寫任何允許。

注意

default AWS Key Management Service (AWS KMS) 金鑰具有 內所有 IAM 主體的Decrypt許可 AWS 帳戶。如果您希望對帳戶中的 SecureString 參數擁有不同的存取級別,不建議您使用預設金鑰。

如果您希望擷取參數值的所有 API 操作具有相同的行為,則可以使用政策GetParameter*中的模式。下列範例會顯示如何拒絕以 prod-* 開頭的所有參數的 GetParameterGetParametersGetParameterHistory 以及 GetParametersByPath

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ssm:GetParameter*" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }

下列範例顯示如何拒絕某些命令,同時允許使用者在以 prod-* 開頭的所有參數中執行其他命令。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:DeleteParameters", "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter", "ssm:GetParameterHistory" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }
注意

參數歷程包含所有參數版本,包括目前的參數版本。因此,如果 GetParameterGetParametersGetParameterByPath 的使用者許可遭到拒絕、但允許 GetParameterHistory 的許可,則透過使用 GetParameterHistory,他們可以看到當前參數,包括 SecureString 參數。

僅允許特定參數在節點上執行

您可以控制存取,讓受管節點僅可執行您指定的參數。

如果您在建立SecureString參數時選擇參數類型,Systems Manager 會使用 AWS KMS 來加密參數值。 會使用 AWS 受管金鑰 或客戶受管金鑰來 AWS KMS 加密該值。如需 AWS KMS 和 的詳細資訊 AWS KMS key,請參閱 AWS Key Management Service 開發人員指南

您可以從 AWS 受管金鑰 執行下列命令來檢視 AWS CLI。

aws kms describe-key --key-id alias/aws/ssm

下列範例允許節點僅取得以 prod- 開頭的參數的參數值。如果參數為 SecureString 參數,則節點會使用 AWS KMS來解密字串。

注意

如下列範例所示,執行個體政策會指派給 IAM 中的執行個體角色。如需設定存取 Systems Manager 功能的詳細資訊,包括如何將政策指派給使用者和執行個體,請參閱 使用 Systems Manager 管理EC2執行個體

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-2:123456789012:key/4914ec06-e888-4ea5-a371-5b88eEXAMPLE" ] } ] }

使用 AWS 預設金鑰和客戶受管金鑰的 IAM 許可

Parameter Store SecureString 參數會使用 AWS KMS 金鑰加密和解密。您可以選擇使用 AWS KMS key 或 提供的預設 KMS 金鑰來加密SecureString參數 AWS。

使用客戶受管金鑰時,授予使用者參數或參數路徑存取權的 IAM 政策必須提供金鑰的明確kms:Encrypt許可。例如,下列政策允許使用者建立、更新和檢視以 開頭的SecureString參數,其位於指定的 AWS 區域 和 prod-中 AWS 帳戶。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:GetParameter", "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:us-east-2:111122223333:parameter/prod-*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" Footnote callout 1 to explain a line in a JSON policy ], "Resource": [ "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-12345EXAMPLE" ] } ] }

1 使用指定的客戶受管金鑰建立加密的進階參數時,需要 kms:GenerateDataKey 許可。

相反地,客戶帳戶中的所有使用者都可以存取預設的 AWS 受管金鑰。如果您使用此預設金鑰加密SecureString參數,且不希望使用者使用SecureString參數,則其 IAM 政策必須明確拒絕存取預設金鑰,如下列政策範例所示。

注意

您可以在 受AWS 管金鑰頁面上的 AWS KMS 主控台中找到預設金鑰的 Amazon Resource Name (ARN)。預設金鑰是別名資料欄中用 aws/ssm 標識的金鑰。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-2:111122223333:key/abcd1234-ab12-cd34-ef56-abcdeEXAMPLE" ] } ] }

如果您需要對帳戶中的 SecureString 參數進行細微的存取控制,應該使用客戶受管金鑰來保護和限制對這些參數的存取。我們也建議使用 AWS CloudTrail 來監控SecureString參數活動。

如需詳細資訊,請參閱下列主題: