管理密钥的基于资源的策略 - AWS Secrets Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

管理密钥的基于资源的策略

本节介绍了如何在密钥中附加、检索和删除基于资源的策略。

一个 AWS 账户拥有所有 AWS 资源,包括您在 AWS SecretsManager。 AWS 包含用于创建或访问资源的基于资源的策略。帐户管理员可以控制访问 AWS 通过将基于资源的策略直接附加到资源、秘密或 IAM 需要访问资源的身份、用户、组和角色。

有关 AWS Identity and Access Management,请参阅 IAM 政策和权限 第页,共页 IAM 用户指南.

您可以在以后检索基于资源的策略以进行检查,并在不再需要时删除基于资源的策略。

使用SecretsManagerConsole或 GetResourcePolicyPutResourcePolicy,和 DeleteResourcePolicy API用于检索、附加或删除某个秘密的基于资源的策略。在控制台中附加基于资源的JSON格式策略时,SecretsManager使用 扎尔科娃,自动推理引擎和API, ValidateResourcePolicy,验证策略不会授予广泛的 IAM 负责人访问您的秘密。或者,您可以致电 PutResourcePolicy API BlockPublicPolicy 来自CLI或SDK的参数。

作为可接受的基于资源的策略的考虑,基于资源的策略只能授予以下一个或多个固定值的访问权限:

  • aws:SourceArn

  • aws:SourceVpc

  • aws:SourceVpce

  • aws:SourceAccount

有关详细信息,请参阅 AmazonS3文档.

AWS 在以下产品和 Secrets Manager 提供类似的体验:

  • AWS Config

  • Amazon S3。

  • AWS Trusted Advisor

  • Amazon Macie

  • Amazon GuardDuty

如果策略不会创建广泛的可访问密码,则SecretsManagerConsole使用 PutResourcePolicy API以附加策略。如果您创建了一个基于资源的策略,允许广泛的iam主体访问密码,则SecretsManagerConsole会显示错误消息,并防止您附加策略。

您仍然可以使用CLI和API命令添加、修改、检索和删除基于资源的策略。

将基于资源的策略附加到密钥

将基于资源的策略附加到密码

有关构建基于资源的策略的详细信息,请参阅Secrets Manager 密钥访问权限管理概述使用 Secrets Manager 的基于资源的策略

使用以下步骤将基于资源的策略附加到密码。

Using the Secrets Manager Console

您可以使用 Secrets Manager 控制台。策略必须格式化为JSON结构化文本。

要将策略添加到现有密码,请使用以下步骤:

  1. 选择要添加或修改基于资源的策略的密码。

  2. 向下滚动到 资源权限(可选) 部分并选择 编辑权限. 在JSON格式中输入您的策略进入Code字段。

  3. 选择 Save (保存)

Secrets Manager 验证策略是否为 保存 过程。

以下JSON代码示例显示可接受的基于资源的策略:

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::123456789012:user/admin" }, "Action":"secretsmanager:GetSecretValue", "Resource":"arn:aws:secretsmanager:us-east-1:123456789012:secret:consolesecret-m4qxfJ" } ] }

IFIFIF Secrets Manager 检测到基于资源的无效策略, Secrets Manager 根据遇到的错误类型返回错误消息。

  • 锁定JSON

    Your requested changes will not allow you to manage this secret in the future.
    { "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Deny", "Principal" : "*", "Action" : "secretsmanager:*", "Resource" : "*" } ] }
  • 广泛访问JSON

    This resource policy grants broad access to your secret. Secrets Manager does not allow creating and applying such policies in the console.
    { "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Principal" : "*", "Action" : "secretsmanager:*", "Resource" : "*" } ] }
  • 语法错误JSON

    This resource policy contains a syntax error.
    { "Version" : "2012-10-17", "Statement" : [ { "Effect" : "AllowSomething", "Principal" : "*", "Action" : "secretsmanager:*", "Resource" : "*" } ] }
  • 主要策略JSON无效

    This resource policy contains an unsupported principal.
    { "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::123456789012:user/invaliduser" }, "Action" : "secretsmanager:GetSecretValue", "Resource" : "*" } ] }
  • 无效服务负责人JSON

    This resource policy contains an invalid service principal.
    { "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::123456789012:user/iam-user", "Service": [ "invalidservice.amazonaws.com" ] }, "Action" : "secretsmanager:GetSecretValue", "Resource" : "*" } ] }

Secrets Manager 在单个输出中显示多个错误。

Using the AWS CLI or AWS SDK operations

您可以使用以下命令附加或修改用于向指定密钥授予或拒绝访问权限的策略文档。策略文档必须格式化为 JSON 结构化文本。有关更多信息,请参阅 使用 Secrets Manager 的基于资源的策略。) 我们建议您将策略文档存储为文本文件,然后在命令参数中引用该文件。

以下CLI命令会附加或替换当前附加到密码的基于资源的策略。 Secrets Manager 从文件检索策略文档 secretpolicy.json.

$ aws secretsmanager put-resource-policy --secret-id production/MyAwesomeAppSecret --resource-policy file://secretpolicy.json { "ARN": "arn:aws-cn:secretsmanager:us-west-2:123456789012:secret:production/MyAwesomeAppSecret-a1b2c3", "Name": "MyAwesomeAppSecret" }

使用可选参数, --block-public-policy,返回错误,因为SecretsManager不允许此类型的策略。SecretsManager返回以下主机: 调用putresourcePolicy操作时出错(blockpublicpolicyexception): 您无法附加允许广泛访问秘密的基于资源的策略。”

从密钥检索基于资源的策略

检索附加到密钥的权限策略

使用以下步骤检索附加到密码的基于资源的策略的文本。

Using the Secrets Manager Console

要检索密码的基于资源的策略,请使用以下步骤:

  1. 从可用秘密列表中选择秘密。

  2. 向下滚动到 资源权限(可选).

  3. 要更改文本,请选择 编辑权限.

  4. 选择 保存 保存对基于资源的策略的任何更改。

Using the AWS CLI or AWS SDK operations

您可以使用以下命令检索当前附加到指定密钥的策略文档。

以下示例 CLI 命令检索当前附加到密钥的基于资源的权限策略的文本。

$ aws secretsmanager get-resource-policy --secret-id production/MyAwesomeAppSecret { "ARN": "arn:aws-cn:secretsmanager:us-west-2:123456789012:secret:production/MyAwesomeAppSecret-a1b2c3", "Name": "MyAwesomeAppSecret", "ResourcePolicy": "{\"Version\":\"2012-10-17\",\"Statement\":{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws-cn:iam::111122223333:root\",\"arn:aws-cn:iam::444455556666:root\"},\"Action\":[\"secretsmanager:GetSecret\",\"secretsmanager:GetSecretValue\"],\"Resource\":\"*\"}}" }

从密钥删除基于资源的策略

删除连接到密码的基于资源的策略

可以使用以下步骤删除当前附加到指定密钥的基于资源的策略。

Using the Secrets Manager Console
  1. 从已配置的秘密列表中选择密码。

  2. 向下滚动到 资源权限(可选).

  3. 选择 编辑权限.

  4. 删除策略文本并选择 保存.

    Secrets Manager 返回表示已成功删除来自秘密的资源策略的消息。

Using the AWS CLI or AWS SDK operations

您可以使用以下命令删除当前附加到指定密钥的基于资源的策略。

以下示例 CLI 命令删除当前附加到密钥的基于资源的权限策略。

$ aws secretsmanager delete-resource-policy --secret-id production/MyAwesomeAppSecret { "ARN": "arn:aws-cn:secretsmanager:us-west-2:123456789012:secret:production/MyAwesomeAppSecret-a1b2c3", "Name": "production/MyAwesomeAppSecret" }