

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

# クロスサービスの混乱した副防止
<a name="cross-service-confused-deputy-prevention"></a>

**重要**  
サポート終了通知: 既存のお客様は、07/31/2025 のサポート終了まで Amazon QLDB を使用できます。詳細については、[「Amazon QLDB 台帳を Amazon Aurora PostgreSQL に移行する](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)」を参照してください。

混乱した代理問題は、アクションを実行する許可を持たないエンティティが、より特権のあるエンティティにアクションを実行するように強制できるセキュリティの問題です。では AWS、サービス間のなりすましにより、混乱した代理問題が発生する可能性があります。

サービス間でのなりすましは、1 つのサービス (*呼び出し元サービス*) が、別のサービス (*呼び出し対象サービス*) を呼び出すときに発生する可能性があります。呼び出し元サービスは、本来ならアクセスすることが許可されるべきではない方法でその許可を使用して、別のお客様のリソースに対する処理を実行するように操作される場合があります。混乱した代理問題を防ぐために、 は、アカウント内のリソースへのアクセス権が付与されたサービスプリンシパルを持つすべてのサービスのデータを保護するのに役立つツール AWS を提供します。

リソースポリシー内では [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) および [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) のグローバル条件コンテキストキーを使用して、Amazon QLDB が別のサービスに付与する、リソースへのアクセス許可を制限することをお勧めします。グローバル条件コンテキストキーの両方を使用しており、それらが同じポリシーステートメントで使用される場合、`aws:SourceAccount` 値と `aws:SourceArn` 値のアカウントが同じアカウント ID を使用する必要があります。

次の表は、[https://docs.aws.amazon.com/qldb/latest/developerguide/API_ExportJournalToS3.html](https://docs.aws.amazon.com/qldb/latest/developerguide/API_ExportJournalToS3.html) および [https://docs.aws.amazon.com/qldb/latest/developerguide/API_StreamJournalToKinesis.html](https://docs.aws.amazon.com/qldb/latest/developerguide/API_StreamJournalToKinesis.html) QLDB API オペレーションでの `aws:SourceArn` の可能な値の一覧です。これらのオペレーションは、指定した IAM ロールを引き受けるために AWS Security Token Service （AWS STS) を呼び出すため、このセキュリティ問題の対象になります。


****  

| API オペレーション | 呼び出されるサービス | aws:SourceArn | 
| --- | --- | --- | 
| ExportJournalToS3 | AWS STS ([https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)) |  QLDB がアカウントの任意の QLDB リソースのロールを引き受けることを許可します。 <pre>arn:aws:qldb:us-east-1:123456789012:*</pre> 現在、QLDB では、このワイルドカード ARN をジャーナルエクスポートでのみサポートしています。  | 
| StreamsJournalToKinesis | AWS STS ([https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)) |  QLDB が特定の QLDB ストリーミングのロールを引き受けることを許可します。 <pre>arn:aws:qldb:us-east-1:123456789012:stream/myExampleLedger/IiPT4brpZCqCq3f4MTHbYy</pre> **注意:** ARN でストリーム ID を指定できるのは、ストリームリソースが作成された後のみです。この ARN を使用すると、単一の QLDB ストリームに対してのみロールを使用できるようにできます。 QLDB が台帳の任意の QLDB ストリームのロールを引き受けることを許可します。 <pre>arn:aws:qldb:us-east-1:123456789012:stream/myExampleLedger/*</pre> QLDB がアカウントの任意の QLDB ストリームのロールを引き受けることを許可します。 <pre>arn:aws:qldb:us-east-1:123456789012:stream/*</pre> QLDB がアカウントの任意の QLDB リソースのロールを引き受けることを許可します。 <pre>arn:aws:qldb:us-east-1:123456789012:*</pre>  | 

混乱した代理問題から保護するための最も効果的な方法は、リソースの完全な ARN を指定して `aws:SourceArn` グローバル条件コンテキストキーを使用することです。リソースの完全な ARN が不明な場合や、複数のリソースを指定する場合には、`aws:SourceArn` グローバルコンテキスト条件キーで、ARN の未知部分を示すためにワイルドカード文字 (`*`) を使用します (例: `arn:aws:qldb:us-east-1:123456789012:*`)。

次の IAM ロールの信頼ポリシーの例では、`aws:SourceArn` および `aws:SourceAccount` グローバル条件コンテキストキーを使用して、「混乱した代理」問題を回避する方法を示します。この信頼ポリシーを使用すると、QLDB は台帳 `123456789012` のみでアカウント `myExampleLedger` の任意の QLDB ストリーミングに対応するロールを引き受けることができます。

このポリシーを使用するには、以下の例の *us-east-1*、*123456789012*、および *myExampleLedger* を自分の情報と置き換えます。

```
{
  "Version": "2012-10-17",
  "Statement": {
    "Sid": "ConfusedDeputyPreventionExamplePolicy",
    "Effect": "Allow",
    "Principal": {
      "Service": "qldb.amazonaws.com"
    },
    "Action": [ "sts:AssumeRole" ],
    "Condition": {
      "ArnEquals": {
        "aws:SourceArn": "arn:aws:qldb:us-east-1:123456789012:stream/myExampleLedger/*"
      },
      "StringEquals": {
        "aws:SourceAccount": "123456789012"
      }
    }
  }
}
```