本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
受管知識庫的資源政策
資源型政策是您直接連接到受管知識庫的 JSON 文件。它控制哪些 IAM 主體可以在知識庫上執行動作,啟用跨帳戶存取等使用案例。此政策同時支援 Allow和 Deny效果。
重要
僅受管知識庫支援資源型政策 (類型 MANAGED)。向量知識庫 (類型 VECTOR) 不支援資源政策。
支援的動作
下列動作可用於知識庫資源政策:
| Action | 說明 |
|---|---|
bedrock:Retrieve |
查詢知識庫並從資料來源擷取相關結果。 |
bedrock:GetDocumentContent |
從知識庫資料來源擷取特定文件的完整內容。 |
注意
資源政策中無法使用控制平面操作GetKnowledgeBase,例如 DeleteKnowledgeBase、、 UpdateKnowledgeBase和資料來源管理操作。這些操作必須由知識庫擁有者帳戶中的主體執行。
資源政策需求
知識庫資源政策遵循標準 IAM 政策語法。如需政策元素和評估邏輯的詳細資訊,請參閱AWS Identity and Access Management 《 使用者指南》中的 IAM JSON 政策元素參考。
適用下列服務特定限制條件:
-
僅受管知識庫。資源政策只能連接到類型 的知識庫
MANAGED。嘗試將資源政策連接至VECTOR類型知識庫會傳回錯誤。 -
支援的動作。只有
bedrock:Retrieve和bedrock: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" }
使用拒絕陳述式
資源政策同時支援 Allow和 Deny效果。資源政策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" } ] }