EC2 インスタンスの起動失敗に対する、「UnauthorizedOperation」という認証エラーをデコードして分析する方法を教えてください。

所要時間1分
0

Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを起動しようとしましたが、次のエラーが表示されました。 "An error occurred (UnauthorizedOperation) when calling the RunInstances operation: You are not authorized to perform this operation.Encoded authorization failure message encoded-message"

簡単な説明

UnauthorizedOperation エラーは、AWS Identity and Access Management (IAM) ポリシーの制限が厳しすぎる場合に発生する場合があります。このエラーは、IAM ユーザーに EC2 インスタンスを起動するためのアクセス許可がない場合にも発生する可能性があります。エラーの詳細を確認するには、AWS コマンドラインインターフェイス (AWS CLI) を使用して、エラーメッセージ内のエンコードされたメッセージをデコードします。

注: エンコードされたメッセージをデコードするには、IAM ユーザーまたはロールに DecodeAuthorizationMessage API 操作を実行するアクセス許可が必要です。ユーザーまたはロールにこのアクセス許可がない場合、デコード操作は失敗し、次のエラーメッセージが表示されます。

"Error: A client error (AccessDenied) occurred when calling the DecodeAuthorizationMessage operation: User: xxx is not authorized to perform: (sts:DecodeAuthorizationMessage) action"

解決策

注: AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI でのエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

認証失敗エラーをデコードするには、次の手順を実行します。

  1. decode-authorization-message コマンドを実行します。

    aws sts decode-authorization-message --encoded-message encoded-message-error

    注: encoded-message-error は、実際のエラーメッセージ内のエンコードされたメッセージに置き換えます。

    デコードされたメッセージには、IAM ロールまたはユーザーポリシーで欠けている、必要なアクセス許可が一覧表示されます。

    エンコードされたメッセージの例:

    Launch Failed - You are not authorized to perform this operation. Encoded authorization failure message: 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn

    デコードされたメッセージの例:

    aws sts decode-authorization-message --encoded-message 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn
    {
        "DecodedMessage":
    {
    "allowed
    ...
    "context{\"principal\":{\"id\":\"ABCDEFGHIJKLMNO\",\"name\":\"AWS-User\",
    \"arn\":\"arn:aws:iam::accountID:user/test-user\"},\"action\":\"iam:PassRole\",
    \"resource\":\"arn:aws:iam::accountID:role/EC2_instance_Profile_role\",\"conditions\":{\"items\":[{\"key\":\"aws:Region\",\"values\":{\"items\":[{\"value\":\"us-east-2\"}]}},
    {\"key\":\"aws:Service\",\"values\":{\"items\":[{\"value\":\"ec2\"}]}},{\"key\":\"aws:Resource\",\"values\":{\"items\":[{\"value\":\"role/EC2_instance_Profile_role\"}]}},
    {\"key\":\"iam:RoleName\",\"values\":{\"items\":[{\"value\":\"EC2_instance_Profile_role\"}]}},{\"key\":\"aws:Account\",\"values\":{\"items\":[{\"value\":\"accountID\"}]}},
    {\"key\":\"aws:Type\",\"values\":{\"items\":[{\"value\":\"role\"}]}},{\"key\":\"aws:ARN\",\"values\":{\"items\":[{\"value\":\"arn:aws:iam::accountID:role/EC2_instance_Profile_role\"}]}}]}}}"
    }
  2. principalaction, resourceconditionkey フィールドを確認すると、エラーの原因についてより詳細な情報を取得できます。メッセージには、リクエストされたアクションとリソース、リクエストを行ったプリンシパル、ユーザーのリクエストの条件キー値が含まれます。

    上記の例では、AWS ユーザーには arn:aws:iam::accountID:role/EC2_instance_Profile_role の ARN で iam:PassRole アクションを実行するアクセス許可がないため、リクエストが失敗しています。

  3. IAM ユーザーまたはロールに関連付けられている IAM ポリシーを編集し、必要なアクセス許可を追加します。

IAM ポリシーシミュレーターを使用して、ID ベースのポリシーと IAM アクセス許可の境界をトラブルシューティングすることもできます。

関連情報

EC2 インスタンスで AWS CLI コマンドを実行できないのはなぜですか?

EC2 インスタンスを起動できない理由を知りたいです

アクセス拒否エラーメッセージのトラブルシューティング

AWS公式
AWS公式更新しました 5ヶ月前