ターゲットリソースでの API コールに対する許可の検証 - Application Auto Scaling

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ターゲットリソースでの API コールに対する許可の検証

Application Auto Scaling API アクションに許可されたリクエストを行うには、API AWS CloudWatch 呼び出し元がターゲットサービス内および内のリソースにアクセスする権限を持っている必要があります。アプリケーションの Auto Scaling は、 CloudWatch リクエストを続行する前に、ターゲットサービスの両方に関連するリクエストのアクセス権限を検証します。これを行うには、一連のコールを発行してターゲットリソースに対する IAM 許可を検証します。レスポンスが返されると、Application Auto Scaling がそのレスポンスを読み取ります。IAM 許可が所定のアクションが許可しない場合、Application Auto Scaling はリクエストを失敗させ、欠落している許可に関する情報が含まれたエラーをユーザーに返します。これは、ユーザーがデプロイするスケーリング設定が意図したとおりに機能することと、リクエストが失敗した場合に有用なエラーが返されることを確実にします。

この仕組みの一例として、アプリケーションの Auto Scaling が Aurora とを使用して権限の検証を実行する方法の詳細を以下の情報に示します。 CloudWatch

ユーザーが Aurora DB クラスターに対して RegisterScalableTarget API を呼び出すと、Application Auto Scaling は以下のすべてのチェックを実行してユーザーに必要なアクセス許可 (太字) があることを確認します。

  • rds:CreateDBInstance: ユーザーにこの許可があるかどうかを判断するため、CreateDBInstance API オペレーションにリクエストを送信して、ユーザーが指定した Aurora DB クラスターで無効なパラメータ (空のインスタンス ID) を使った DB インスタンスの作成を試みます。許可があるユーザーの場合、API は、リクエストを監査した後で InvalidParameterValue エラーコードレスポンスを返します。しかし、許可がないユーザーの場合は、AccessDenied エラーが発生し、欠落している許可がリストされた、ユーザーへの ValidationException エラーを伴って Application Auto Scaling リクエストが失敗します。

  • rds:DeleteDBInstance: DeleteDBInstance API オペレーションに空のインスタンス ID を送信します。許可があるユーザーの場合、このリクエストの結果は InvalidParameterValue エラーになります。許可がないユーザーの場合は、結果が AccessDenied になり、ユーザーに検証例外が送信されます (最初の箇条書きで説明されているものと同じ対応)。

  • rds: AddTagsToResource: AddTagsToResource API オペレーションには Amazon リソースネーム (ARN) が必要なため、ARN () を作成するには、無効なアカウント ID (12345) とダミーインスタンス ID (non-existing-db) を使用して「ダミー」リソースを指定する必要があります。arn:aws:rds:us-east-1:12345:db:non-existing-db許可があるユーザーの場合、このリクエストの結果は InvalidParameterValue エラーになります。許可がないユーザーの場合は、結果が AccessDenied になり、ユーザーに検証例外が送信されます

  • rds:DescribeDBCluster: オートスケーリングに登録されているリソースのクラスター名を記述します。許可があるユーザーの場合、有効な記述結果が得られます。許可がないユーザーの場合は、結果が AccessDenied になり、ユーザーに検証例外が送信されます

  • rds:DescribeDBInstance。スケーラブルターゲットを登録するためにユーザーが提供したクラスター名をフィルタリングする db-cluster-id フィルターを使って、DescribeDBInstance API を呼び出します。許可があるユーザーの場合、DB クラスター内のすべての DB インスタンスを記述することが許可されます。許可がないユーザーの場合は、この呼び出しの結果が AccessDenied になり、ユーザーに検証例外が送信されます

  • cloudwatchPutMetricAlarm: パラメータなしで API を呼び出します。PutMetricAlarmアラーム名が欠落しているため、リクエストの結果は、許可があるユーザーに対する ValidationError になります。許可がないユーザーの場合は、結果が AccessDenied になり、ユーザーに検証例外が送信されます

  • cloudwatch: DescribeAlarms: 最大レコード数の値を 1 に設定して DescribeAlarms API を呼び出します。許可があるユーザーの場合、レスポンスに 1 つのアラームに関する情報があることを期待できます。許可がないユーザーの場合は、この呼び出しの結果が AccessDenied になり、ユーザーに検証例外が送信されます

  • cloudwatch: DeleteAlarms: PutMetricAlarm 上記と同様に、DeleteAlarmsリクエストするパラメータは提供しません。リクエストにアラーム名がないため、この呼び出しは、許可があるユーザーに対する ValidationError を伴って失敗します。許可がないユーザーの場合は、結果が AccessDenied になり、ユーザーに検証例外が送信されます

これらの検証例外は、そのうちのどれかが発生するたびにログに記録されます。を使用して AWS CloudTrail、どのコールが検証に失敗したかを手動で特定する手順を実行できます。詳細については、『AWS CloudTrail ユーザーガイド』を参照してください。

注記

を使用してアプリケーションの Auto Scaling イベントのアラートを受信した場合 CloudTrail、これらのアラートには、デフォルトでユーザー権限を検証するためのApplication Auto Scaling 呼び出しが含まれます。これらのアラートを除外する場合は、これらの検証チェックのための application-autoscaling.amazonaws.com が含まれている invokedBy フィールドを使用します。