AWS Backup の認証ステータスメッセージがエンコードされているのをデコードしようと思います。
簡単な説明
あるメッセージがエンコードされています。その認証ステータスの詳細に、操作をリクエストしたユーザーには見えない特権的情報が含まれている可能性があるためです。デコードされたメッセージには、次の種類の情報が含まれています。
- 明示的な拒否のため、または明示的な許可がなかったため、リクエストが拒否されたかどうか。詳細については、「リクエストを許可するか拒否するかをアカウント内で判断する」を参照してください。
- リクエストを行ったプリンシパル。
- リクエストされたアクション。
- リクエストされたリソース。
- ユーザーのリクエストのコンテキストでの条件キーの値。
たとえば、ユーザーがリクエストした操作を実行する権限がそのユーザーにない場合、そのリクエストからは Client.unauthorizedOperation レスポンス (HTTP 403 レスポンス) が返されます。AWS オペレーションによっては、認証失敗の詳細を示すメッセージをエンコードしたものも返すことがあります。
解像度
前提条件: 認証ステータスメッセージをデコードするには、sts:DecodeAuthorizationMessage AWS Identity と Access Management (IAM) 権限が必要です。
認証ステータスメッセージをデコードするには、AWS コマンドラインインターフェイス (AWS CLI) を使用して decode-authorization-message コマンドを実行します。次に示すのはサンプルコマンドです。
ヒント: Linux ベースのオペレーティングシステムを使用している場合は、このコマンドを (GitHub Web サイトの) jq ユーティリティと組み合わせると、出力が見やすくなります。
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 ロールにアクセス権を追加します。
関連情報
失敗した Amazon EC2 復元ジョブのトラブルシューティングに AWS Backup を使用する方法を教えてください。