我想对 AWS Backup 的编码授权状态消息进行解码。
简短描述
消息之所以被编码,是因为授权状态的详细信息可能包含请求操作的用户看不到的特权信息。解码后的消息包括以下类型的信息:
- 请求是由于显式拒绝还是由于没有显式允许而被拒绝。有关详细信息,请参阅确定在账户内是否允许或拒绝请求。
- 提出请求的主体。
- 请求的操作。
- 请求的资源。
- 用户请求的上下文中条件密钥的值。
例如,如果用户无权执行他们所请求的操作,则请求会返回 Client.UnauthorizedOperation 响应(HTTP 403 响应)。某些 AWS 操作还会返回编码消息,该消息可以提供有关授权失败的详细信息。
解决方法
**先决条件:**您必须拥有 sts:DecodeAuthorizationMessage AWS Identity and Access Management(IAM)权限,才能对授权状态消息进行解码。
要对授权状态消息进行解码,请使用 AWS 命令行界面(AWS CLI)运行 decode-authorization-message 命令。以下是命令示例:
**提示:**如果您使用的是基于 Linux 的操作系统,则可以将此命令与 jq 实用程序(来自 GitHub 网站)结合使用,以查看便于查看的输出。
aws sts decode-authorization-message --encoded-message (encoded error message) --query DecodedMessage --output text | jq '.'
**注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI。
以下是前面命令的输出示例:
{
"allowed": false,
…..
"context": {
"principal": {
"id": "AROAAAAAAAAAA:AWSBackup-AWSBackupDefaultServiceRole",
"arn": "arn:aws:sts::111122223333:assumed-role/AWSBackupDefaultServiceRole/AWSBackup-AWSBackupDefaultServiceRole"
},
"action": "iam:PassRole",
"resource": "arn:aws:iam::111122223333:role/AmazonSSMRoleForInstancesQuickSetup",
"conditions": {
"items": [
…..
}
输出示例显示恢复角色是 AWSBackupDefaultServiceRole。恢复角色必须具有 iam:PassRole 权限,这样才能与恢复实例所需的 AmazonSSMRoleForInstancesQuickSetup 角色进行交互。要解决此示例问题,请使用 IAM 策略为 IAM 角色添加权限。
相关信息
如何使用 AWS Backup 对失败的 Amazon EC2 恢复任务进行故障排除?