

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 관리형 지식 기반에 대한 리소스 정책
<a name="kb-managed-cross-account"></a>

리소스 기반 정책은 관리형 지식 기반에 직접 연결하는 JSON 문서입니다. 지식 기반에서 작업을 수행할 수 있는 IAM 보안 주체를 제어하여 교차 계정 액세스와 같은 사용 사례를 활성화합니다. 이 정책은 `Allow` 및 `Deny` 효과를 모두 지원합니다.

**중요**  
리소스 기반 정책은 관리형 지식 기반(유형 `MANAGED`)에서만 지원됩니다. 벡터 지식 기반(유형 `VECTOR`)은 리소스 정책을 지원하지 않습니다.

## 지원되는 작업
<a name="kb-managed-cross-account-supported-actions"></a>

지식 기반 리소스 정책에서 다음 작업을 사용할 수 있습니다.


****  

| 작업 | 설명 | 
| --- | --- | 
| bedrock:Retrieve | 지식 기반을 쿼리하고 데이터 소스에서 관련 결과를 검색합니다. | 
| bedrock:GetDocumentContent | 지식 기반 데이터 소스에서 특정 문서의 전체 콘텐츠를 검색합니다. | 

**참고**  
`GetKnowledgeBase`, `DeleteKnowledgeBase`, `UpdateKnowledgeBase`및 데이터 소스 관리 작업과 같은 컨트롤 플레인 작업은 리소스 정책에서 사용할 수 없습니다. 이러한 작업은 지식 기반 소유자 계정의 보안 주체가 수행해야 합니다.

## 리소스 정책 요구 사항
<a name="kb-managed-cross-account-resource-policy"></a>

지식 기반 리소스 정책은 표준 IAM 정책 구문을 따릅니다. 정책 요소 및 평가 로직에 대한 자세한 내용은 *AWS Identity and Access Management 사용 설명서*의 [IAM JSON 정책 요소 참조](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)를 참조하세요.

다음과 같은 서비스별 제약 조건이 적용됩니다.
+ **관리형 지식 기반만 해당됩니다.** 리소스 정책은 유형의 지식 기반에만 연결할 수 있습니다`MANAGED`. 리소스 정책을 `VECTOR` 유형 지식 기반에 연결하려고 하면 오류가 반환됩니다.
+ **지원되는 작업.** 리소스 정책에는 `bedrock:Retrieve` 및 만 사용할 `bedrock:GetDocumentContent` 수 있습니다.
+ **리소스 또는 작업에 와일드카드가 없습니다.** `Resource` 요소에 전체 지식 기반 ARN을 지정하고 각 작업을 명시적으로 나열해야 합니다. 이러한 요소에서는 와일드카드가 지원되지 않습니다.

## 교차 계정 액세스 작동 방식
<a name="kb-managed-cross-account-how-it-works"></a>

교차 계정 액세스를 사용하면 다른 AWS 계정의 보안 주체가 지식 기반`GetDocumentContent`에서 `Retrieve` 및를 호출할 수 있습니다. 교차 계정 액세스가 작동하려면 다음 두 조건을 모두 충족해야 합니다.
+ 지식 기반 소유자는 호출 보안 주체에게 액세스 권한을 부여하는 리소스 정책을 연결합니다.
+ 호출 보안 주체에는 지식 기반 ARN에서 해당 Amazon Bedrock 작업을 허용하는 자격 증명 기반 정책이 있습니다.

IAM이 교차 계정 액세스를 평가하는 방법에 대한 자세한 내용은 AWS Identity and Access Management 사용 설명서의 [교차 계정 정책 평가 로직](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html)을 참조하세요.

**예: 교차 계정 액세스 권한 부여**

다음 리소스 정책은 다른 계정의 특정 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"
}
```

## 거부 문 사용
<a name="kb-managed-cross-account-deny"></a>

리소스 정책은 `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}}"
}
```

## 리소스 정책 관리
<a name="kb-managed-cross-account-manage-policies"></a>

지식 기반에서 리소스 정책을 관리하려면 지식 기반 소유자의 IAM 보안 주체에 다음 권한이 필요합니다.


****  

| 작업 | 설명 | 
| --- | --- | 
| 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
```

## 리소스 정책 버전 관리
<a name="kb-managed-cross-account-version-parameter"></a>

`PutResourcePolicy`를 호출하면 API는 정책의 현재 버전을 `policyRevisionId` 나타내는를 반환합니다. 필요에 따라 후속 `PutResourcePolicy` 호출에이 개정 ID를 포함하여 낙관적 잠금을 적용할 수 있습니다.
+ 현재 버전과 `policyRevisionId` 일치하는를 제공하면 업데이트가 성공하고 새 개정 ID가 반환됩니다.
+ 현재 버전과 일치하지 `policyRevisionId` 않는를 제공하는 경우(다른 보안 주체가 그 동안 정책을 업데이트했기 때문에) 충돌 오류와 함께 호출이 실패합니다. 현재 정책을 검색하고 변경 사항을 병합한 다음 다시 시도합니다.
+ 를 생략하면 동시 수정`policyRevisionId`에 관계없이 정책이 조건부로 대체됩니다.

실수로 덮어쓰는 것을 방지하기 위해 여러 관리자 또는 자동화 시스템이 동일한 지식 기반 정책을 동시에 업데이트할 수 있는 경우 개정 ID를 사용합니다.

## 소비자 계정 설정
<a name="kb-managed-cross-account-identity-policy"></a>

소비 계정에서 공유 지식 기반에 액세스해야 하는 보안 주체에 자격 증명 기반 정책을 연결합니다. 정책은 소유자 계정의 지식 기반 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}}"
        }
    ]
}
```