View a markdown version of this page

受管知識庫的資源政策 - Amazon Bedrock

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

受管知識庫的資源政策

資源型政策是您直接連接到受管知識庫的 JSON 文件。它控制哪些 IAM 主體可以在知識庫上執行動作,啟用跨帳戶存取等使用案例。此政策同時支援 AllowDeny效果。

重要

僅受管知識庫支援資源型政策 (類型 MANAGED)。向量知識庫 (類型 VECTOR) 不支援資源政策。

支援的動作

下列動作可用於知識庫資源政策:

Action 說明
bedrock:Retrieve 查詢知識庫並從資料來源擷取相關結果。
bedrock:GetDocumentContent 從知識庫資料來源擷取特定文件的完整內容。
注意

資源政策中無法使用控制平面操作GetKnowledgeBase,例如 DeleteKnowledgeBase、、 UpdateKnowledgeBase和資料來源管理操作。這些操作必須由知識庫擁有者帳戶中的主體執行。

資源政策需求

知識庫資源政策遵循標準 IAM 政策語法。如需政策元素和評估邏輯的詳細資訊,請參閱AWS Identity and Access Management 《 使用者指南》中的 IAM JSON 政策元素參考

適用下列服務特定限制條件:

  • 僅受管知識庫。資源政策只能連接到類型 的知識庫MANAGED。嘗試將資源政策連接至VECTOR類型知識庫會傳回錯誤。

  • 支援的動作。只有 bedrock:Retrievebedrock:GetDocumentContent可用於資源政策。

  • 資源或動作中沒有萬用字元。您必須在 Resource元素中指定完整的知識庫 ARN,並明確列出每個動作。這些元素不支援萬用字元。

跨帳戶存取的運作方式

跨帳戶存取可讓其他 AWS 帳戶中的主體在您的知識庫GetDocumentContent上呼叫 Retrieve和 。若要讓跨帳戶存取正常運作,必須符合下列兩項條件:

  • 知識庫擁有者會連接資源政策,以授予呼叫委託人的存取權。

  • 呼叫主體具有身分型政策,允許知識庫 ARN 上對應的 Amazon Bedrock 動作。

如需 IAM 如何評估跨帳戶存取的詳細資訊,請參閱 AWS Identity and Access Management 《 使用者指南》中的跨帳戶政策評估邏輯

範例:授予跨帳戶存取權

下列資源政策會授予另一個帳戶中的特定 IAM 角色呼叫 Retrieve和 的許可GetDocumentContent

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountRetrieve", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::CONSUMER_ACCOUNT_ID:role/service-role-name" }, "Action": [ "bedrock:Retrieve", "bedrock:GetDocumentContent" ], "Resource": "arn:aws:bedrock:REGION:OWNER_ACCOUNT_ID:knowledge-base/KB_ID" } ] }

授予多個委託人的存取權

若要授予對多個取用角色的存取權,請將 中的每個角色 ARN 列為Principal.AWS陣列:

"Principal": { "AWS": [ "arn:aws:iam::ACCOUNT_ID_1:role/role-name-1", "arn:aws:iam::ACCOUNT_ID_2:role/role-name-2" ] }

若要將存取權授予其他帳戶中的所有主體,請使用帳戶根做為主體:

"Principal": { "AWS": "arn:aws:iam::CONSUMER_ACCOUNT_ID:root" }

使用拒絕陳述式

資源政策同時支援 AllowDeny效果。資源政策Deny中的明確 會覆寫委託人身分型政策Allow中的任何 。

{ "Sid": "DenySpecificPrincipals", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_ID:role/role-name" }, "Action": [ "bedrock:Retrieve", "bedrock:GetDocumentContent" ], "Resource": "arn:aws:bedrock:REGION:OWNER_ACCOUNT_ID:knowledge-base/KB_ID" }

管理資源政策

若要管理知識庫上的資源政策,知識庫擁有者的 IAM 主體需要下列許可:

Action 說明
bedrock:PutResourcePolicy 在知識庫上連接或更新資源型政策。
bedrock:GetResourcePolicy 檢視連接至知識庫的資源型政策。
bedrock:DeleteResourcePolicy 從知識庫移除資源型政策。

知識庫擁有者的政策範例

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock:PutResourcePolicy", "bedrock:GetResourcePolicy", "bedrock:DeleteResourcePolicy" ], "Resource": "arn:aws:bedrock:REGION:ACCOUNT_ID:knowledge-base/KB_ID" } ] }

API 操作

PutResourcePolicy — 在知識庫上連接或取代以資源為基礎的政策。

PUT /resourcepolicy/{knowledgeBaseArn} HTTP/1.1 Content-Type: application/json { "policy": "{policyDocument}" }

policy 欄位是包含政策文件的 JSON 逸出字串。

GetResourcePolicy — 傳回目前連接至知識庫的資源型政策。

GET /resourcepolicy/{knowledgeBaseArn} HTTP/1.1

ResourceNotFoundException 如果未連接任何政策,則傳回 。

DeleteResourcePolicy — 從知識庫移除以資源為基礎的政策。

DELETE /resourcepolicy/{knowledgeBaseArn} HTTP/1.1

資源政策版本控制

當您呼叫 時PutResourcePolicy,API 會傳回policyRevisionId代表政策目前版本的 。您可以選擇性地在後續PutResourcePolicy呼叫中包含此修訂 ID,以強制執行樂觀鎖定。

  • 如果您提供的 policyRevisionId 符合目前版本,則更新會成功,並傳回新的修訂 ID。

  • 如果您提供的 policyRevisionId不符合目前版本 (因為另一個委託人同時更新了政策),則呼叫會失敗並出現衝突錯誤。擷取目前的政策、合併您的變更,然後重試。

  • 如果您省略 policyRevisionId,則無論任何並行修改,政策都會無條件取代。

當多個管理員或自動化系統可以同時更新相同的知識庫政策時,請使用修訂 ID,以防止意外覆寫。

設定消費者帳戶

在耗用帳戶中,將身分型政策連接到需要存取共用知識庫的主體。此政策必須允許擁有者帳戶中知識庫 ARN 上對應的 Amazon Bedrock 動作。

以身分為基礎的政策範例

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock:Retrieve", "bedrock:GetDocumentContent" ], "Resource": "arn:aws:bedrock:REGION:OWNER_ACCOUNT_ID:knowledge-base/KB_ID" } ] }