本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
限制對 的存取 Parameter Store 使用 IAM 政策的參數
您可以使用 AWS Identity and Access Management (IAM) 限制對 AWS Systems Manager 參數的存取。更具體地說,您可以建立 IAM 政策來限制對下列 API 操作的存取:
使用 IAM 政策限制 Systems Manager 參數的存取時,建議您建立並使用限制性 IAM 政策。例如,下列政策可讓使用者針對有限的資源集呼叫 DescribeParameters
和 GetParameters
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-*
開頭的所有參數的 GetParameter
、GetParameters
、GetParameterHistory
以及 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-*" } ] }
注意
參數歷程包含所有參數版本,包括目前的參數版本。因此,如果 GetParameter
、GetParameters
和 GetParameterByPath
的使用者許可遭到拒絕、但允許 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" ], "Resource": [ "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-12345EXAMPLE" ] } ] }
1 使用指定的客戶受管金鑰建立加密的進階參數時,需要 kms:GenerateDataKey
許可。
相反地,客戶帳戶中的所有使用者都可以存取預設的 AWS 受管金鑰。如果您使用此預設金鑰加密SecureString
參數,且不希望使用者使用SecureString
參數,則其 IAM 政策必須明確拒絕存取預設金鑰,如下列政策範例所示。
注意
您可以在 受AWS 管金鑰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
參數活動。
如需詳細資訊,請參閱下列主題:
-
IAM 使用者指南中的政策評估邏輯
-
《AWS Key Management Service 開發人員指南》中的在 AWS KMS中使用金鑰政策
-
在 AWS CloudTrail 使用者指南中檢視具有 CloudTrail 事件歷史記錄的事件