預防跨服務混淆代理人 - Amazon Quantum Ledger Database (Amazon QLDB)

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

預防跨服務混淆代理人

混淆代理人問題屬於安全性問題,其中沒有執行動作許可的實體可以強制具有更多許可的實體執行該動作。在中 AWS,跨服務模擬可能會導致混淆的副問題。

在某個服務 (呼叫服務)呼叫另一個服務 (被呼叫服務)時,可能會發生跨服務模擬。可以操縱呼叫服務來使用其許可,以其不應有存取許可的方式對其他客戶的資源採取動作。為了避免混淆的副問題, AWS 提供的工具可協助您保護所有服務的資料,其中包含已授予您帳戶資源存取權的服務主體。

我們建議在資源政策中使用aws:SourceArnaws:SourceAccount全域條件內容金鑰,以限制 Amazon QLDB 為資源提供其他服務的許可。如果您同時使用全域條件內容索引鍵,則aws:SourceAccount值和帳戶在相同政策陳述式中使用時,aws:SourceArn值和帳戶必須使用相同的帳戶 ID。

下表列出ExportJournalToS3StreamsJournalToKinesisQLDB API aws:SourceArn 作業的可能值。這些操作在此安全問題的範圍內,因為它們會呼叫 AWS Security Token Service (AWS STS) 來承擔您指定的 IAM 角色。

API 操作 呼叫的服務 AWS:SourceArn
ExportJournalToS3 AWS STS (AssumeRole)

允許 QLDB 擔任帳戶中任何 QLDB 資源的角色:

arn:aws:qldb:us-east-1:123456789012:*

目前,QLDB 僅支援此萬用字元 ARN 進行分錄匯出。

StreamsJournalToKinesis AWS STS (AssumeRole)

允許 QLDB 擔任特定 QLDB 串流的角色:

arn:aws:qldb:us-east-1:123456789012:stream/myExampleLedger/IiPT4brpZCqCq3f4MTHbYy

注意:您只能在串流資源建立之後,在 ARN 中指定串流 ID。使用此 ARN,您可以允許角色僅用於單一 QLDB 串流。

允許 QLDB 擔任分類帳之任何 QLDB 串流的角色:

arn:aws:qldb:us-east-1:123456789012:stream/myExampleLedger/*

允許 QLDB 擔任帳戶中任何 QLDB 串流的角色:

arn:aws:qldb:us-east-1:123456789012:stream/*

允許 QLDB 擔任帳戶中任何 QLDB 資源的角色:

arn:aws:qldb:us-east-1:123456789012:*

防範混淆代理人問題的最有效方法是使用 aws:SourceArn 全域條件內容索引鍵,以及資源的完整 ARN。如果您不知道資源的完整 ARN,或者您要指定多個資源,請針對 ARN 的未知部分使用萬用字元 (*) 的aws:SourceArn全域內容條件索引鍵,例如。arn:aws:qldb:us-east-1:123456789012:*

IAM 角色的下列信任政策範例說明如何使用aws:SourceArnaws:SourceAccount全域條件內容金鑰來避免混淆的副問題。透過此信任原則,QLDB 只能擔任分類帳帳戶123456789012中任何 QLDB 串流的角色。myExampleLedger

若要使用此原則,請以您自己的資訊取代我們-東部 1123456789012,並在此範例中使用您自己的資訊。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" } } } }