排除 AWS Secrets Manager 的故障 - AWS Secrets Manager

排除 AWS Secrets Manager 的故障

使用此处的信息可帮助您诊断和修复您在使用 Secrets Manager 时可能遇到的问题。

有关轮换的问题,请参阅 AWS Secrets Manager 密钥轮换问题排查

在向 Secrets Manager 发送请求时,收到“拒绝访问”消息

确认您有权调用请求的操作和资源。管理员必须通过将 IAM 策略附加到您的 IAM 用户或您所属的组来授予权限。如果授予这些权限的策略语句包含任何条件 (例如,当日时间或 IP 地址限制),则您还必须在发送请求时满足这些要求。有关查看或修改适用于 IAM 用户、组或角色的策略的信息,请参阅《IAM 用户指南》中的使用策略。有关 Secrets Manager 所需权限的信息,请参阅 AWS Secrets Manager 的身份验证和访问控制

如果您手动对 API 请求进行签名而不使用 AWS SDK,请确认您已正确对请求进行签名

对于临时安全凭证的“拒绝访问”

请确认用于发出请求的 IAM 用户或角色具有正确的权限。临时安全凭证的权限来自于 IAM 用户或角色。这意味着,权限仅限于为 IAM 用户或角色授予的权限。有关临时安全凭证权限的确定方式的更多信息,请参阅 IAM 用户指南中的控制临时安全凭证的权限

确认已正确对请求进行签名,并且请求格式正确无误。有关详细信息,请参阅所选 SDK 的工具包文档或 IAM 用户指南中的使用临时安全凭证以请求对 AWS 资源的访问权限

验证您的临时安全凭证没有过期。有关更多信息,请参阅《IAM 用户指南》中的请求临时安全凭证

有关 Secrets Manager 所需权限的信息,请参阅 AWS Secrets Manager 的身份验证和访问控制

并非始终立即显示我所做的更改。

Secrets Manager 使用名为最终一致性的分布式计算模型。您在 Secrets Manager(或其他 AWS 服务)中所做的任何更改需要一些时间才会对相关终端节点可见。它在服务器与服务器之间、复制区域与复制区域之间,以及全球的区域与区域之间发送数据需要时间,这会造成一定的延迟。Secrets Manager 也使用缓存来提高性能,但在某些情况下,这可能会增加时间。在之前缓存的数据超时之前,更改可能不可见。

在设计全球应用程序时应考虑到这些可能的延迟。此外,确保应用程序可以按预期工作,即使在一个位置进行的更改不能立即在其他位置可见。

有关最终一致性如何影响某些其他 AWS 服务的更多信息,请参阅:

在创建秘密时收到“Cannot generate a data key with an asymmetric KMS key”(无法使用非对称 KMS 密钥生成数据密钥)

Secrets Manager 使用与密钥关联的对称加密 KMS 密钥来为每个密钥值生成数据密钥。不能使用非对称 KMS 密钥。确认您使用的是对称加密 KMS 密钥,而不是非对称 KMS 密钥。有关说明,请参阅识别非对称 KMS 密钥

AWS CLI 或 AWS SDK 操作无法从部分 ARN 中找到我的秘密。

在许多情况下,Secrets Manager 可以从不完整的 ARN 中找到密钥,而无需完整的 ARN。但如果密钥名称以连字符后跟六个字符结尾,Secrets Manager 可能无法仅从一部分 ARN 中找到密钥。我们建议您改用完整的 ARN。

Secrets Manager 可为密钥构建 ARN,其中包含区域、账户、密钥名称,后跟连字符和六个字符,如下所示:

arn:aws:secretsmanager:us-east-2:111122223333:secret:SecretName-abcdef

如果密钥名称以连字符和六个字符结尾,当您仅使用一部分 ARN 时,在 Secrets Manager 看来您似乎指定了完整的 ARN。例如,您可能具有一个名为 MySecret-abcdef 的密钥,其 ARN 如下:

arn:aws:secretsmanager:us-east-2:111122223333:secret:MySecret-abcdef-nutBrk

当您调用以下操作(此操作仅使用一部分密钥 ARN)时,Secrets Manager 可能会找不到密钥。

$ aws secretsmanager describe-secret --secret-id arn:aws:secretsmanager:us-east-2:111122223333:secret:MySecret-abcdef

此密钥由 AWS 服务管理,您必须使用该服务更新密钥。

如果您在尝试修改密钥时遇到此消息,则只能使用消息中列出的管理服务来更新密钥。有关更多信息,请参阅其他 AWS 服务管理的密钥

要确定谁管理密钥,您可以查看密钥名称。由其他服务管理的密钥以该服务的 ID 作为前缀。或者,在 AWS CLI 中调用 describe-secret,然后查看字段 OwningService