

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

# 데이터 소스에 대한 VPC 연결 구성
<a name="kb-managed-vpc-configuration"></a>

일부 데이터 소스는 VPC의 내부 로드 밸런서가 있는 온프레미스 Confluence Data Center 인스턴스와 같이 퍼블릭 인터넷을 통해 연결할 수 없는 프라이빗 리소스에서 실행됩니다. 이러한 데이터 소스를 크롤링하려면 VPC 구성을 생성합니다. Amazon Bedrock은 구성을 사용하여 프라이빗 네트워크 경로를 VPC에 프로비저닝하고 리소스에 도달합니다.

VPC 구성은 지식 기반에서 재사용 가능한 리소스입니다. 한 번 생성한 다음 하나 이상의 데이터 소스에서 ID로 참조합니다. 프라이빗 연결이 필요한 데이터 소스를 생성할 때 기존 VPC 구성을 선택하거나 새 VPC 구성을 생성합니다.

**참고**  
Amazon Bedrock은 VPC 구성을 프로비저닝할 때 지식 기반과 연결된 AWS Identity and Access Management (IAM) 역할을 수임하여 계정에 작은 네트워킹 리소스 세트를 생성합니다. Amazon Bedrock이 생성하는 모든 리소스에는 태그가 지정`ManagedBy=VPCProxyService`되며 역할은 해당 태그를 전달하는 리소스에서만 작업할 수 있습니다. [지식 기반 IAM 역할 권한](#kb-managed-vpc-configuration-role)을(를) 참조하세요.

## 제공하는 내용
<a name="kb-managed-vpc-configuration-provide"></a>

VPC 구성을 생성하려면 다음을 제공합니다.


**VPC 구성 입력**  

| Input | 필요한 이유 | 
| --- | --- | 
| VPC 및 하나 이상의 서브넷 | Amazon Bedrock이 네트워크 진입점(프라이빗 게이트웨이)을 VPC에 배치합니다. 선택한 VPC에서 1\~6개의 서브넷을 제공합니다. | 
| 리소스 대상 및 포트 | 연결할 리소스의 프라이빗 IP 주소 또는 DNS 이름(및 포트)입니다. | 
| 지식 기반 IAM 역할 | Amazon Bedrock은이 역할을 수임하여 계정의 네트워킹 리소스를 프로비저닝합니다. [지식 기반 IAM 역할 권한](#kb-managed-vpc-configuration-role)을(를) 참조하세요. | 

보안 그룹은 제공하지 않습니다. Amazon Bedrock은 게이트웨이에 VPC의 기본 보안 그룹을 사용합니다. 기본 보안 그룹의 아웃바운드(송신) 규칙이 요청된 포트에서 대상에 도달하도록 허용하는지 확인합니다. [기본 보안 그룹에서 송신](#kb-managed-vpc-configuration-egress)을(를) 참조하세요.

## 네트워크 요구 사항
<a name="kb-managed-vpc-configuration-network"></a>

Amazon Bedrock은 프라이빗 네트워크 인터페이스(퍼블릭 IP 주소 없음)로만 생성된 프라이빗 게이트웨이를 통해 리소스에 도달합니다. 게이트웨이는 VPC의 프라이빗(로컬) 네트워크를 통해 대상에 도달하며 퍼블릭 IP 주소에 도달할 수 없습니다. 리소스 대상은 VPC 내부에서 비공개로 연결할 수 있어야 합니다.
+ DNS 이름이 프라이빗 주소(예: , `10.{{x}}` `172.{{x}}`또는 `scheme: internal`)로 확인되는 내부 로드 밸런서(`192.168.{{x}}`).
+ 프라이빗 IP 주소 또는 프라이빗 VPC 내 주소로 확인되는 프라이빗 DNS 이름입니다.

인터넷 경계 로드 밸런서는 지원되지 않습니다. 인터넷 경계 로드 밸런서는 VPC 내 DNS 쿼리에도 퍼블릭 IP 주소를 반환하며 프라이빗 게이트웨이는 해당 주소에 도달할 수 없습니다. 리소스가 현재 인터넷 경계 로드 밸런서를 통해서만 노출되는 경우 동일한 VPC에서 내부 로드 밸런서를 생성(또는 가리키기)하고 해당 DNS 이름을 리소스 대상으로 사용합니다.

## VPC 구성 생성
<a name="kb-managed-vpc-configuration-create"></a>

------
#### [ Console ]

**VPC 구성을 추가하려면**

1. 데이터 소스 구성의 **VPC 구성**에서 **VPC 구성 추가**를 선택합니다. 적절한 구성이 이미 있는 경우 데이터 소스에서 재사용하려면 해당 구성을 선택합니다.

1. (선택 사항) 구성의 **이름과** **설명을** 입력합니다.

1. **VPC ID**에서 연결에 사용할 VPC를 선택합니다.

1. **서브넷 IDs** 선택한 VPC에서 하나 이상의 서브넷을 선택합니다.

1. **리소스 대상**에 리소스의 호스트 이름 또는 IP 주소(예: `10.0.1.50` 또는 `confluence.internal.example.com`)를 입력합니다.

1. **포트에** 연결할 포트 번호(예: `443` 또는 `8090`)를 입력합니다.

1. **프로토콜**에서 **HTTPS** 또는 **HTTP**를 선택합니다.

1. **해결 모드에서** 리소스 대상 주소의 해결 방법을 선택합니다.
   + **퍼블릭** - 리소스 대상은 공개적으로 확인 가능한 호스트 이름 또는 IP 주소입니다.
   + **VPC **- 리소스 대상은 VPC 내에서만 확인할 수 있습니다. 이는 내부 리소스의 일반적인 사례입니다.

1. (선택 사항) **호스트 헤더**에 요청과 함께 전송할 `Host` 헤더 값을 입력합니다. 리소스(또는 업스트림 라우터)가 HTTP `Host` 헤더를 통해 라우팅하는 경우에만 이를 설정합니다.

1. (HTTPS의 경우 필수) **TLS 서버 이름**에 리소스에 대해 예상되는 TLS 인증서 자격 증명(주제 대체 이름)을 입력합니다. 맨 왼쪽 와일드카드 하나가 허용됩니다(예: `*.example.com`).

1. **생성(Create)**을 선택합니다.

------
#### [ API ]

VPC 구성을 생성하려면 `CreateVpcConfiguration` 요청을 보냅니다. 모든 작업은 `knowledgeBaseId` 경로 파라미터를 통해 지식 기반까지 범위가 지정됩니다. Amazon Bedrock은 지식 기반에서 계정 ID 또는 역할 ARN을 해결하기 때문에 요청 본문에는 계정 ID 또는 역할 ARN이 포함되지 않습니다.

```
POST /knowledgebases/{{knowledgeBaseId}}/vpcconfigurations/
```

요청 본문은 다음 필드를 사용합니다.


**CreateVpcConfiguration 필드**  

| Field | 필수 | 설명 | 
| --- | --- | --- | 
| vpcId | 예 | VPC의 ID입니다. 일치, ^vpc-[a-zA-Z0-9]\+$최대 64자. | 
| subnetIds | 예 | 지정된 VPC의 서브넷 IDs 1\~6개. 각는와 일치합니다^subnet-[a-zA-Z0-9]\+$. | 
| resourceTarget | 예 | 리소스의 IPv4 주소 또는 DNS 이름(1\~255자). [리소스 대상 제한](#kb-managed-vpc-configuration-target)을(를) 참조하세요. | 
| port | 예 | 연결할 포트(1\~65535). | 
| protocol | 예 | HTTP 또는 HTTPS | 
| resolutionMode | 예 | PUBLIC 또는 IN\_VPC 대상이 VPC 내에서만 확인될 IN\_VPC 때 사용합니다. | 
| tlsServerName | 조건부 | protocol가 일 때 필요합니다HTTPS. 호스트 이름이 리소스의 TLS 인증서와 일치합니다(최대 253자). 맨 왼쪽 와일드카드는 하나만 허용됩니다. 포트를 포함하지 않아야 합니다. | 
| hostHeader | 아니요 | 전송할 HTTP Host 헤더 값입니다(최대 255자). 리소스가 Host 헤더를 기준으로 라우팅되는 경우에만를 설정합니다. | 
| name | 아니요 | 사람이 읽을 수 있는 이름(1\~128자). | 
| description | 아니요 | 설명(최대 512자). | 
| clientToken | 아니요 | 멱등성 토큰입니다. | 

생성은 비동기식입니다.는 `vpcConfigurationId` 및 상태의 `202` 응답을 `CreateVpcConfiguration` 반환합니다`CREATING`. 상태가 `CREATED` (또는가 될 `GetVpcConfiguration` 때까지 폴링합니다. `CREATE_FAILED`이 경우는 원인의 `statusMessage` 이름을 지정합니다.) `ListVpcConfigurations`를 사용하여 구성을 나열하고 `DeleteVpcConfiguration`를 사용하여 구성을 제거합니다.

**참고**  
동일한 서브넷 세트를 사용하여 동일한 VPC에서 여러 구성을 생성하는 경우 하나의 게이트웨이를 공유합니다. 다른 서브넷 세트는 별도의 게이트웨이를 프로비저닝합니다.

------

## 프로토콜, TLS 서버 이름 및 호스트 헤더
<a name="kb-managed-vpc-configuration-fields"></a>

이 세 가지 설정이 가장 일반적으로 잘못 구성되어 있습니다. 다음 지침에 따라 올바른 값을 선택합니다.

`protocol`  
일반 텍스트 HTTP를 통해 리소스를 `HTTP` 호출하거나 TLS를 통해 리소스를 호출`HTTPS`하도록 선택합니다.

`tlsServerName`  
`protocol`가 일 때 필요합니다`HTTPS`. 호출 중에 리소스의 TLS 인증서 주체 대체 이름과 일치하는 서버 이름입니다. 인증서가 발급된 호스트 이름으로 설정합니다(예: `app.internal.example.com`). 맨 왼쪽 와일드카드 하나가 허용됩니다(예: `*.example.com`). IP 주소에서 리소스에 도달했지만 이름에 대한 인증서를 제공하는 경우 `tlsServerName`를 해당 이름으로 설정합니다. 인증서가 일치하지 않으면 호출은 TLS 자격 증명 검사에 실패합니다. 이 값은 포트가 없는 호스트 이름이어야 합니다.

`hostHeader`  
선택 사항이며와 독립적인 애플리케이션 계층 문제입니다`tlsServerName`. 리소스, 업스트림 라우터 또는 수신이 HTTP `Host` 헤더를 기준으로 라우팅되고 해당 호스트가 그렇지 않으면 전송할 호스트와 다른 경우에만 설정합니다. 리소스가 단일 사이트를 제공하고에 의해 라우팅되지 않는 경우 설정되지 않은 상태로 `Host`둡니다.

`resolutionMode`  
`PUBLIC` 리소스 대상이 공개적으로 확인 가능한 이름인지 아니면 퍼블릭 IP 주소인지 선택합니다. 리소스 대상이 VPC(프라이빗 DNS 또는 프라이빗 IP 주소) 내에서만 확인`IN_VPC`되는 경우를 선택합니다. 이는 내부 리소스의 일반적인 사례입니다. 리터럴 프라이빗 IP 대상(예: `10.0.5.20`)은 확인할 DNS 이름이 없기 때문에 두 모드 중 하나에서 작동합니다.

## 리소스 대상 제한
<a name="kb-managed-vpc-configuration-target"></a>

Amazon Bedrock은 구성을 생성할 `resourceTarget` 때 서비스가 자체 또는 내부 인프라로 전달되지 않도록 유효성을 검사합니다. 다음 대상은 거부됩니다.
+ 루프백 주소(`127.0.0.0/8`, `::1`) 및 `localhost`.
+ 인스턴스 메타데이터 엔드포인트를 포함한 링크-로컬 주소(`169.254.0.0/16`, `fe80::/10`). `169.254.169.254` 
+ 와일드카드 또는 임의의 로컬 주소(`0.0.0.0`, `::`) 및 `0.0.0.0/8` 블록.
+ 멀티캐스트 주소.
+ IPv6 리터럴. 게이트웨이는 IPv4-only으로 프로비저닝되므로 IP 대상은 점선 쿼드 IPv4 주소여야 합니다.

DNS 이름은 허용됩니다. 검증은 이를 해결하지 않으므로 게이트웨이 서브넷에서 대상에 계속 연결할 수 있어야 합니다.

## 기본 보안 그룹에서 송신
<a name="kb-managed-vpc-configuration-egress"></a>

Amazon Bedrock은 게이트웨이에 VPC의 기본 보안 그룹을 사용하기 때문에 해당 보안 그룹의 송신 규칙은 `resourceTarget`에 대한 액세스를 허용해야 합니다`port`. 기본 보안 그룹이 잠긴 경우 나중에 시간이 초과되는 대신 명확한 메시지와 함께 생성이 빠르게 실패합니다. 구성을 생성하기 전에 송신 규칙이 게이트웨이 서브넷에서 대상 및 포트로의 트래픽을 허용하는지 확인합니다.

## 지식 기반 IAM 역할 권한
<a name="kb-managed-vpc-configuration-role"></a>

Amazon Bedrock은 지식 기반과 연결된 IAM 역할을 수임하여 계정의 네트워킹 리소스를 프로비저닝하고 나중에 해제합니다. 역할은 아래의 생성 및 삭제 권한과 재시도된 삭제를 멱등적으로 만드는 읽기 권한을 부여해야 합니다. Amazon Bedrock이 생성하는 모든 리소스에는 태그가 지정`ManagedBy=VPCProxyService`되고 파괴적 권한은 해당 태그에 게이트 처리되므로 역할은이 기능이 생성한 리소스에서만 작업할 수 있습니다.
+ **생성** - `vpc-lattice:CreateResourceGateway`, `vpc-lattice:CreateResourceConfiguration`, `vpc-lattice:TagResource`, `vpc-lattice:PutResourcePolicy`, `ram:TagResource`, `ram:CreateResourceShare``ram:AssociateResourceShare`, 및 `iam:CreateServiceLinkedRole` (VPC Lattice 서비스 연결 역할의 경우 일회성).
+ **삭제** - `vpc-lattice:DeleteResourceGateway`, `vpc-lattice:DeleteResourceConfiguration`및 `ram:DeleteResourceShare`.
+ **읽기(검증 및 멱등성)** - `vpc-lattice:GetResourceGateway`, `vpc-lattice:GetResourceConfiguration`, `ram:GetResourceShares`, `ec2:DescribeSubnets`, 및 `ec2:DescribeSecurityGroups``ec2:DescribeVpcs`.

**중요**  
`vpc-lattice:GetResourceGateway` 및를 모두 부여합니다`vpc-lattice:GetResourceConfiguration`. 삭제 권한은 태그 범위이므로 이미 삭제된 리소스를 삭제하면 찾을 수 없는 오류가 아닌 액세스 거부 오류가 반환됩니다. Amazon Bedrock은 태그가 지정되지 않은 이러한 읽기 권한을 사용하여 이미 삭제된 리소스(성공으로 처리됨)에 실제 권한 문제를 알립니다. 그렇지 않으면 부분 실패 후 재시도된 삭제가 중단될 수 있습니다.

다음 예제 정책은 필요한 권한을 부여합니다. {{region}} 및 {{accountId}}를 값으로 바꿉니다.

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VpcProxyCreateTagged",
            "Effect": "Allow",
            "Action": [
                "vpc-lattice:CreateResourceGateway",
                "vpc-lattice:CreateResourceConfiguration",
                "vpc-lattice:TagResource"
            ],
            "Resource": [
                "arn:aws:vpc-lattice:{{region}}:{{accountId}}:resourcegateway/*",
                "arn:aws:vpc-lattice:{{region}}:{{accountId}}:resourceconfiguration/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/ManagedBy": "VPCProxyService",
                    "aws:ResourceTag/ManagedBy": "VPCProxyService"
                },
                "ForAllValues:StringEquals": { "aws:TagKeys": ["ManagedBy"] }
            }
        },
        {
            "Sid": "VpcProxyPutResourcePolicy",
            "Effect": "Allow",
            "Action": "vpc-lattice:PutResourcePolicy",
            "Resource": [
                "arn:aws:vpc-lattice:{{region}}:{{accountId}}:resourceconfiguration/*"
            ],
            "Condition": {
                "StringEquals": { "aws:ResourceTag/ManagedBy": "VPCProxyService" }
            }
        },
        {
            "Sid": "VpcProxyRamCreate",
            "Effect": "Allow",
            "Action": "ram:CreateResourceShare",
            "Resource": "*",
            "Condition": {
                "StringEquals": { "aws:RequestTag/ManagedBy": "VPCProxyService" },
                "StringEqualsIfExists": {
                    "ram:RequestedResourceType": "vpc-lattice:ResourceConfiguration"
                }
            }
        },
        {
            "Sid": "VpcProxyRamAssociate",
            "Effect": "Allow",
            "Action": "ram:AssociateResourceShare",
            "Resource": "*",
            "Condition": {
                "StringEquals": { "aws:ResourceTag/ManagedBy": "VPCProxyService" }
            }
        },
        {
            "Sid": "VpcProxyRamTagOnCreate",
            "Effect": "Allow",
            "Action": "ram:TagResource",
            "Resource": [
                "arn:aws:ram:{{region}}:{{accountId}}:resource-share/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/ManagedBy": "VPCProxyService",
                    "aws:ResourceTag/ManagedBy": "VPCProxyService"
                },
                "ForAllValues:StringEquals": { "aws:TagKeys": ["ManagedBy"] }
            }
        },
        {
            "Sid": "VpcProxyDeleteTagged",
            "Effect": "Allow",
            "Action": [
                "vpc-lattice:DeleteResourceConfiguration",
                "vpc-lattice:DeleteResourceGateway"
            ],
            "Resource": [
                "arn:aws:vpc-lattice:{{region}}:{{accountId}}:resourcegateway/*",
                "arn:aws:vpc-lattice:{{region}}:{{accountId}}:resourceconfiguration/*"
            ],
            "Condition": {
                "StringEquals": { "aws:ResourceTag/ManagedBy": "VPCProxyService" }
            }
        },
        {
            "Sid": "VpcProxyRamDeleteTagged",
            "Effect": "Allow",
            "Action": "ram:DeleteResourceShare",
            "Resource": [
                "arn:aws:ram:{{region}}:{{accountId}}:resource-share/*"
            ],
            "Condition": {
                "StringEquals": { "aws:ResourceTag/ManagedBy": "VPCProxyService" },
                "StringLike": { "ram:ResourceShareName": "vpc-proxy-share-*" }
            }
        },
        {
            "Sid": "VpcProxyGetResource",
            "Effect": "Allow",
            "Action": [
                "vpc-lattice:GetResourceConfiguration",
                "vpc-lattice:GetResourceGateway"
            ],
            "Resource": [
                "arn:aws:vpc-lattice:{{region}}:{{accountId}}:resourcegateway/*",
                "arn:aws:vpc-lattice:{{region}}:{{accountId}}:resourceconfiguration/*"
            ]
        },
        {
            "Sid": "VpcProxyRamGetResourceShares",
            "Effect": "Allow",
            "Action": "ram:GetResourceShares",
            "Resource": "*"
        },
        {
            "Sid": "VpcProxyEc2Describe",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeVpcs"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VpcProxyLatticeServiceLinkedRole",
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": [
                "arn:aws:iam::{{accountId}}:role/aws-service-role/vpc-lattice.amazonaws.com/*"
            ],
            "Condition": {
                "StringEquals": { "iam:AWSServiceName": "vpc-lattice.amazonaws.com" }
            }
        }
    ]
}
```

## 수명 주기
<a name="kb-managed-vpc-configuration-lifecycle"></a>
+ VPC 구성은 `CREATING`를 통해 또는 `CREATED`로 전환됩니다`CREATE_FAILED`. 삭제할 때 상태는 `DELETING`또는 입니다`DELETE_FAILED`.
+ 생성 및 삭제는 비동기식입니다. 진행 상황을 추적`GetVpcConfiguration`하기 위해 폴링합니다. 실패 시는 누락된 권한과 같은 실행 가능한 원인의 `statusMessage` 이름을 지정합니다.
+ 삭제는 멱등성입니다. 부분적으로 완료된 삭제는 다시 시도할 때 수렴됩니다.