本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
删除和恢复密钥
由于密钥非常重要,AWS Secrets Manager 有意使删除密钥变得非常困难。Secrets Manager 不会立即删除密钥,而是 Secrets Manager 立即使这些密钥无法访问,并计划在恢复时段(最少 为 7 天)后删除这些密钥。在恢复时段结束后,您才能恢复以前删除的密钥。通过使用 CLI,您可以删除密钥,而没有恢复时段。
此外,您也无法直接 删除某个密钥版本,而是从密钥中删除所有暂存标签。这会将密钥标记为已弃用,并允许 Secrets Manager 在后台自动删除该版本。
本部分包括描述删除密钥和恢复已删除密钥的过程和命令:
删除密钥及所有版本
请按照以下选项卡之一中的步骤进行操作:
- Using the Secrets Manager console
-
在您删除密钥时,Secrets Manager 立即弃用该密钥。不过,在经过恢复时段中指定的天数后,Secrets Manager 才会真正删除密钥。您无法访问弃用的密钥。如果您需要访问计划删除的密钥,您必须恢复该密钥。然后,您可以访问密钥和加密的密钥信息。
您可以使用 AWS CLI 或 AWS SDKs。但是,您不能在 Secrets Manager 控制台。
最小权限 要删除控制台中的密钥,您必须具有以下权限:
-
secretsmanager:ListSecrets
– 用于导航到要删除的密钥。 -
secretsmanager:DeleteSecret
– 用于弃用密钥并计划将其永久删除。
-
从 https://console.amazonaws.cn/secretsmanager/
打开 Secrets Manager 控制台。 -
导航到您当前在 Secrets Manager 中管理的密钥列表,然后选择要删除的密钥的名称。
-
在密钥详细信息部分中,选择删除密钥。
-
在计划密钥删除对话框中,指定恢复时段的天数。这表示在永久删除之前等待的天数。Secrets Manager 附加一个名为
DeletionDate
的字段,并将该字段设置为当前日期和时间加上为恢复时段指定的天数。 -
选择计划删除。
-
如果在控制台中启用显示删除的项目的选项,则会继续显示该密钥。您可以选择在列表中查看 Deleted date (删除日期) 字段。
-
选择 偏好 图标(齿轮
)。
-
选择显示计划删除的密钥。
-
启用删除日期开关。
-
选择 Save (保存)。
删除的密钥现在显示在列表中并带有删除每个密钥的日期。
-
-
- Using the AWS CLI or AWS SDK operations
-
您可以使用以下命令检索存储在 AWS Secrets Manager 中的密钥:
-
API/开发工具包:
DeleteSecret
-
AWS CLI:
delete-secret
您必须在
SecretId
字段中按友好名称或 Amazon 资源名称 (ARN) 标识要删除的密钥。以下示例 AWS CLI 命令弃用名为“MyTestDatabase”的密钥,并计划在恢复时段(14 天)后删除该密钥。
$
aws secretsmanager delete-secret --secret-id development/MyTestDatabase --recovery-window-in-days 14
{ "ARN": "arn:aws-cn:secretsmanager:
region
:accountid
:secret:development/MyTestDatabase-AbCdEf
", "Name": "development/MyTestDatabase", "DeletionDate": 1510089380.309 }在
DeletionDate
字段中指定的日期和时间之后的任意时间,AWS Secrets Manager 将永久删除该密钥。您也可以立即删除密钥,无需等待。
重要 无法通过
RestoreSecret
操作恢复使用ForceDeleteWithoutRecovery
参数删除的密钥。AWS CLI 命令的以下示例立即删除密钥而没有恢复时段。
DeletionDate
响应字段显示当前日期和时间,而不是将来的时间。$
aws secretsmanager delete-secret --secret-id development/MyTestDatabase --force-delete-without-recovery
{ "ARN": "arn:aws-cn:secretsmanager:
region
:accountid
:secret:development/MyTestDatabase-AbCdEf
", "Name": "development/MyTestDatabase", "DeletionDate": 1508750180.309 }方便的提示 如果您不知道应用程序仍在使用密钥,则可以创建 Amazon CloudWatch 警报以提醒您在恢复时段任何尝试访问密钥的行为。有关更多信息,请参阅计划删除的监控密钥版本。
-
恢复计划删除的密钥
请按照以下选项卡之一中的步骤进行操作:
- Using the Secrets Manager console
-
Secrets Manager 将计划删除的密钥视为已弃用,而不再直接访问该密钥。在恢复时段过后,Secrets Manager 将永久删除该密钥。在 Secrets Manager 删除密钥后,您无法恢复该密钥。在恢复时段结束之前,您可以恢复密钥并再次使其可进行访问。这会删除
DeletionDate
字段,从而取消计划的永久删除。最小权限 要在控制台中恢复密钥和元数据,您必须具有以下权限:
-
secretsmanager:ListSecrets
– 用于导航到要恢复的密钥。 -
secretsmanager:RestoreSecret
– 用于删除仍与密钥关联的任何版本。
-
从 https://console.amazonaws.cn/secretsmanager/
打开 Secrets Manager 控制台。 -
导航到您当前在 Secrets Manager 中管理的密钥列表。
-
要查看删除的密钥,您必须在控制台中启用该功能。如果尚未启用该功能,请执行以下步骤:
-
-
选择 偏好 图标,齿轮
,位于右上角。
-
选择显示计划删除的密钥。
-
启用删除日期开关。
-
选择 Save (保存)。
删除的密钥现在显示在列表中并带有删除每个密钥的日期。
-
-
选择要恢复的已删除密钥的名称。
-
在密钥详细信息部分中,选择取消删除。
-
在取消密钥删除确认对话框中,选择取消删除。
AWS Secrets Manager 从密钥中删除
DeletionDate
字段。这将取消计划的删除并恢复对密钥的访问。
-
- Using the AWS CLI or AWS SDK operations
-
您可以使用以下命令检索存储在 AWS Secrets Manager 中的密钥:
-
API/开发工具包:
RestoreSecret
-
AWS CLI:
restore-secret
您必须在
SecretId
字段中按友好名称或 ARN 指定要恢复的密钥。以下 AWS CLI 命令示例恢复以前删除的名为“MyTestDatabase”的密钥。这将取消计划的删除并恢复对密钥的访问。
$
aws secretsmanager restore-secret --secret-id development/MyTestDatabase
{ "ARN": "arn:aws-cn:secretsmanager:
region
:accountid
:secret:development/MyTestDatabase-AbCdEf
", "Name": "development/MyTestDatabase" } -
删除密钥的一个版本
请按照以下选项卡之一中的步骤进行操作:
- Using the AWS CLI or AWS SDK operations
-
您无法使用 Secrets Manager 控制台删除密钥的某个版本。您必须使用 AWS CLI 或 AWS API。
您无法直接删除某个密钥版本,而是删除所有暂存标签,这实际上将密钥标记为已弃用。然后,Secrets Manager 可以在后台将其删除。
您可以使用以下命令弃用 AWS Secrets Manager 中存储的密钥版本:
-
API/开发工具包:
UpdateSecretVersionStage
-
AWS CLI:
update-secret-version-stage
您必须按友好名称或 ARN 指定密钥。您还会指定要添加、移动或删除的暂存标签。
您可在以下组合中指定
FromSecretVersionId
和MoveToSecretId
:-
FromSecretVersionId
仅: 这将从指定的版本完全删除暂存标签。 -
MoveToVersionId
仅: 这将暂存标签添加到指定的版本。如果其他版本已附加任何暂存标签,则 Secrets Manager 自动从这些版本中删除标签。 -
MoveToVersionId
和RemoveFromVersionId
: 这些明确移动标签。暂存标签必须在密钥的RemoveFromVersionId
版本上存在,否则,将会出现错误。
以下示例 AWS CLI 命令从名为“MyTestDatabase”的密钥的某个版本中删除
AWSPREVIOUS
暂存标签。您可以使用 ListSecretVersionIds 命令。$
aws secretsmanager update-secret-version-stage \ --secret-id development/MyTestDatabase \ --remove-from-version-id EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE --version-stage AWSPREVIOUS
{ "ARN": "arn:aws-cn:secretsmanager:
region
:accountid
:secret:development/MyTestDatabase-AbCdEf
", "Name": "development/MyTestDatabase" } -