選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

預防跨服務混淆代理人

焦點模式
預防跨服務混淆代理人 - AWS IoT Core

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

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

混淆代理人問題屬於安全性議題,其中沒有執行動作許可的實體可以強制具有更多權限的實體執行該動作。在 中 AWS,跨服務模擬可能會導致混淆代理人問題。在某個服務 (呼叫服務) 呼叫另一個服務 (被呼叫服務) 時,可能會發生跨服務模擬。可以操縱呼叫服務來使用其許可,以其不應有存取許可的方式對其他客戶的資源採取動作。為了預防這種情況, AWS 提供的工具可協助您保護所有服務的資料,而這些服務主體已獲得您帳戶中資源的存取權。

若要限制將另一個 服務 AWS IoT 提供給資源的許可,我們建議在資源政策中使用 aws:SourceArnaws:SourceAccount全域條件內容金鑰。如果同時使用全域條件內容索引鍵,則在相同政策陳述式中使用aws:SourceAccount 值和 aws:SourceArn 值中的帳戶時,必須使用相同的帳戶 ID。

防範混淆代理人問題的最有效方法是使用 aws:SourceArn 全域條件內容索引鍵,其中包含資源的完整 Amazon Resource Name (ARN)。對於 AWS IoT,您的 aws:SourceArn 必須遵循格式:arn:aws:iot:region:account-id:resource-type/resource-id適用於資源特定許可或 arn:aws:iot:region:account-id:*。資源 ID 可以是允許資源的名稱或 ID,也可以是允許資源 IDs的萬用字元陳述式。請確定該區域與您的 AWS IoT 區域相符,且帳戶 ID 與您的客戶帳戶 ID 相符。

下列範例示範如何使用 AWS IoT 角色信任政策中的 aws:SourceArnaws:SourceAccount全域條件內容索引鍵,來避免混淆代理人問題。如需更多範例,請參閱預防混淆代理人的詳細範例

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"iot.amazonaws.com" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "aws:SourceAccount":"123456789012" }, "ArnLike":{ "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:*" } } } ] }
注意

如果您取得存取拒絕錯誤,這可能是因為與 AWS Security Token Service (STS) 的服務整合不支援 aws:SourceArnaws:SourceAccount 內容金鑰。

預防混淆代理人的詳細範例

本節提供詳細範例,說明如何使用 AWS IoT 角色信任政策中的 aws:SourceArn和 aws:SourceAccount全域條件內容索引鍵來防止混淆代理人問題。

機群佈建

您可以使用佈建範本資源來設定機群佈建。當佈建範本參考佈建角色時,該角色的信任政策可以包含 aws:SourceArnaws:SourceAccount條件索引鍵。這些金鑰會限制組態可以調用sts:AssumeRole請求的資源。

具有下列信任政策的角色只能由 IoT 主體 (iot.amazonaws.com) 擔任 中指定的佈建範本SourceArn

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"iot.amazonaws.com" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "aws:SourceAccount":"123456789012" }, "ArnLike":{ "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:provisioningtemplate/example_template" } } } ] }

JITP

just-in-time佈建 (JITP) 中,您可以使用佈建範本做為與 CA 分開的資源,或定義範本內文和角色做為 CA 憑證組態的一部分。 AWS IoT 角色信任政策aws:SourceArn中的 值取決於您如何定義佈建範本。

如果您將佈建範本定義為單獨的資源,則 的值aws:SourceArn可以是 "arn:aws:iot:region:account-id:provisioningtemplate/example_template"。您可以在 中使用相同的政策範例機群佈建

如果您將佈建範本定義為單獨的資源,則 的值aws:SourceArn可以是 "arn:aws:iot:region:account-id:provisioningtemplate/example_template"。您可以在 中使用相同的政策範例機群佈建

如果您在 CA 憑證資源中定義佈建範本,則 的值aws:SourceArn可以是 "arn:aws:iot:region:account-id:cacert/cert_id""arn:aws:iot:region:account-id:cacert/*"。您可以在建立時未知資源識別符時,使用萬用字元,例如 CA 憑證的 ID。

具有下列信任政策的角色只能由 IoT 主體 (iot.amazonaws.com) 擔任 中指定的 CA 憑證SourceArn

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"iot.amazonaws.com" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "aws:SourceAccount":"123456789012" }, "ArnLike":{ "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:cacert/8ecde6884f3d87b1125ba31ac3fcb13d7016de7f57cc904fe1cb97c6ae98196e" } } } ] }

建立 CA 憑證時,您可以在註冊組態中參考佈建角色。佈建角色的信任政策可以使用 aws:SourceArn來限制角色可以擔任哪些資源。不過,在初始 RegisterCACertificate 呼叫註冊 CA 憑證期間,您不會擁有 CA 憑證的 ARN,以在 aws:SourceArn條件中指定。

若要解決此問題,例如,若要將佈建角色信任政策指定給向 註冊的特定 CA 憑證 AWS IoT Core,您可以執行下列動作:

  • 首先,呼叫 RegisterCACertificate 而不提供 RegistrationConfig 參數。

  • 向 註冊 CA 憑證後 AWS IoT Core,請呼叫 UpdateCACertificate

    在 UpdateCACertificate 呼叫中,提供 RegistrationConfig,其中包含佈建角色信任政策,並將 aws:SourceArn 設定為新註冊的 CA 憑證 ARN。

如果您在 CA 憑證資源中定義佈建範本,則 的值aws:SourceArn可以是 "arn:aws:iot:region:account-id:cacert/cert_id""arn:aws:iot:region:account-id:cacert/*"。您可以在建立時未知資源識別符時,使用萬用字元,例如 CA 憑證的 ID。

具有下列信任政策的角色只能由 IoT 主體 (iot.amazonaws.com) 擔任 中指定的 CA 憑證SourceArn

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"iot.amazonaws.com" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "aws:SourceAccount":"123456789012" }, "ArnLike":{ "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:cacert/8ecde6884f3d87b1125ba31ac3fcb13d7016de7f57cc904fe1cb97c6ae98196e" } } } ] }

建立 CA 憑證時,您可以在註冊組態中參考佈建角色。佈建角色的信任政策可以使用 aws:SourceArn來限制角色可以擔任哪些資源。不過,在初始 RegisterCACertificate 呼叫註冊 CA 憑證期間,您不會擁有 CA 憑證的 ARN,以在 aws:SourceArn條件中指定。

若要解決此問題,例如,若要將佈建角色信任政策指定給向 註冊的特定 CA 憑證 AWS IoT Core,您可以執行下列動作:

  • 首先,呼叫 RegisterCACertificate 而不提供 RegistrationConfig 參數。

  • 向 註冊 CA 憑證後 AWS IoT Core,請呼叫 UpdateCACertificate

    在 UpdateCACertificate 呼叫中,提供 RegistrationConfig,其中包含佈建角色信任政策,並將 aws:SourceArn 設定為新註冊的 CA 憑證 ARN。

登入資料提供者

對於AWS IoT Core 登入資料提供者,請使用 AWS 帳戶 您在 中建立角色別名的相同 aws:SourceAccount,並指定符合 中角色別名資源類型之資源 ARN 的陳述式aws:SourceArn。建立 IAM 角色以搭配 AWS IoT Core 登入資料提供者使用時,您必須在aws:SourceArn條件中包含可能需要擔任該角色的任何角色別名的 ARNs,藉此授權跨服務sts:AssumeRole請求。

具有下列信任政策的角色只能由 AWS IoT Core 登入資料提供者 (credentials.iot.amazonaws.com) 的主體擔任 中指定的 roleAliasSourceArn。如果委託人嘗試擷取aws:SourceArn條件中指定以外之角色別名的登入資料,即使該其他角色別名參考相同的 IAM 角色,請求也會遭到拒絕。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:iot:us-east-1:123456789012:rolealias/example_rolealias" } } } ] }
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。