

# Amazon Bedrock AgentCore Gateway에서 IAM 조건 키 사용
<a name="security-gateway-condition-keys"></a>

Amazon Bedrock AgentCore 관련 조건 키를 사용하여 조직에서 게이트웨이 및 게이트웨이 대상을 생성하고 구성하는 방법을 제어할 수 있습니다. 이러한 조건 키는 컨트롤 플레인 작업에 적용됩니다. 이는 조직 보안 요구 사항을 적용하기 위해 서비스 제어 정책(SCPs)에서 특히 유용합니다.

예를 들어, 다음을 수행할 수 있습니다.
+ 모든 게이트웨이가 인증에 특정 자격 증명 공급자를 사용해야 합니다.
+ 생성할 수 있는 대상 유형을 제한합니다.
+ 대상이 특정 자격 증명 공급자 유형을 사용하도록 적용합니다.
+ 게이트웨이 대상이 승인된 서브넷 및 보안 그룹을 통해 연결되어야 합니다.

## 게이트웨이 조건 키
<a name="gateway-condition-keys"></a>

다음 조건 키는 `CreateGateway` 및 `UpdateGateway` 작업에 적용됩니다.


| 조건 키 | 유형 | API 작업 | 설명 | 
| --- | --- | --- | --- | 
|  `bedrock-agentcore:DiscoveryUrl`  | 문자열 |  `CreateGateway`, `UpdateGateway`  | 게이트웨이에 구성된 검색 URL을 기준으로 액세스를 필터링합니다. 게이트웨이가 특정 자격 증명 공급자를 사용하도록 하려면이 옵션을 사용합니다. | 
|  `bedrock-agentcore:KmsKeyArn`  | 문자열 |  `CreateGateway`, `UpdateGateway`  | 게이트웨이 리소스를 암호화하는 데 사용되는 KMS 키 ARN을 기준으로 액세스를 필터링합니다. | 
|  `bedrock-agentcore:PolicyEngineArn`  | 문자열 |  `CreateGateway`, `UpdateGateway`  | 게이트웨이와 연결된 정책 엔진 구성의 ARN을 기준으로 액세스를 필터링합니다. | 
|  `bedrock-agentcore:PolicyEngineMode`  | 문자열 |  `CreateGateway`, `UpdateGateway`  | 게이트웨이와 연결된 정책 엔진 구성의 모드를 기준으로 액세스를 필터링합니다. | 
|  `bedrock-agentcore:ProtocolType`  | 문자열 |  `CreateGateway`, `UpdateGateway`  | 게이트웨이의 프로토콜 유형을 기준으로 액세스를 필터링합니다. | 
|  `bedrock-agentcore:GatewayAuthorizerType`  | 문자열 |  `CreateGateway`, `UpdateGateway`  | 게이트웨이에 구성된 권한 부여자 유형을 기준으로 액세스를 필터링합니다. 유효한 값은 `AWS_IAM`, `CUSTOM_JWT`, `NONE`입니다. | 

## 게이트웨이 대상 조건 키
<a name="gateway-target-condition-keys"></a>

다음 조건 키는 `CreateGatewayTarget` 및 `UpdateGatewayTarget` 작업에 적용됩니다.


| 조건 키 | 유형 | API 작업 | 설명 | 
| --- | --- | --- | --- | 
|  `bedrock-agentcore:McpTargetConfigurationType`  | 문자열 |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | MCP 대상의 유형을 기준으로 액세스를 필터링합니다. 유효한 값에는 `apiGateway`, `lambda`, `mcpServer`, `openApiSchema`, `smithyModel` 및 `connector`가 있습니다. | 
|  `bedrock-agentcore:HttpTargetConfigurationType`  | 문자열 |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | HTTP 대상의 유형을 기준으로 액세스를 필터링합니다. 유효한 값에는 `agentcoreRuntime` 및 `passthrough`(이)가 있습니다. | 
|  `bedrock-agentcore:InferenceTargetConfigurationType`  | 문자열 |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 추론 대상의 유형을 기준으로 액세스를 필터링합니다. 유효한 값에는 `connector` 및 `provider`(이)가 있습니다. | 
|  `bedrock-agentcore:CredentialProviderType`  | 문자열 |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 대상에 구성된 자격 증명 공급자 유형을 기준으로 액세스를 필터링합니다. 유효한 값으로는 `GATEWAY_IAM_ROLE`, `OAUTH`, `API_KEY`, `CALLER_IAM_CREDENTIALS` 및 `JWT_PASSTHROUGH`이 있습니다. | 
|  `bedrock-agentcore:PrivateEndpointType`  | 문자열 |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 대상의 프라이빗 엔드포인트 유형을 기준으로 액세스를 필터링합니다. 유효한 값에는 `managedVpcResource` 및 `selfManagedLatticeResource`(이)가 있습니다. | 
|  `bedrock-agentcore:ResourceConfigurationIdentifier`  | 문자열 |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 대상 프라이빗 엔드포인트의 리소스 구성 식별자를 기준으로 액세스를 필터링합니다. | 
|  `bedrock-agentcore:subnets`  | ArrayOfString |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 대상의 관리형 VPC 리소스에 대해 구성된 서브넷을 기준으로 액세스를 필터링합니다. [AgentCore VPC 설정에서 IAM 조건 키 사용을](security-vpc-condition.md) 참조하세요. | 
|  `bedrock-agentcore:securityGroups`  | ArrayOfString |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 대상의 관리형 VPC 리소스에 대해 구성된 보안 그룹을 기준으로 액세스를 필터링합니다. | 
|  `bedrock-agentcore:AllowedQueryParameters`  | ArrayOfString |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 대상의 메타데이터 구성에서 허용되는 쿼리 파라미터를 기준으로 액세스를 필터링합니다. | 
|  `bedrock-agentcore:AllowedRequestHeaders`  | ArrayOfString |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 대상의 메타데이터 구성에서 허용된 요청 헤더를 기준으로 액세스를 필터링합니다. | 
|  `bedrock-agentcore:AllowedResponseHeaders`  | ArrayOfString |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 대상의 메타데이터 구성에서 허용되는 응답 헤더를 기준으로 액세스를 필터링합니다. | 
|  `bedrock-agentcore:CredentialProviderScope`  | ArrayOfString |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 대상에 대한 OAuth 자격 증명 공급자에 구성된 범위를 기준으로 액세스를 필터링합니다. | 

## 정책 예제
<a name="gateway-condition-key-examples"></a>

다음 예제에서는 IAM 정책 및 SCPs에서 조건 키를 사용하여 게이트웨이 구성에 대한 조직 제어를 적용하는 방법을 보여줍니다.

### 게이트웨이가 특정 자격 증명 공급자를 사용하도록 요구
<a name="example-require-specific-idp"></a>

게이트웨이가 조직의 승인된 자격 증명 공급자 검색 URL을 사용하지 않는 경우 다음 SCP를 사용하여 게이트웨이 생성 또는 업데이트를 거부합니다.

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EnforceGatewayIdP",
            "Effect": "Deny",
            "Action": [
                "bedrock-agentcore:CreateGateway",
                "bedrock-agentcore:UpdateGateway"
            ],
            "Resource": "*",
            "Condition": {
                "StringNotEquals": {
                    "bedrock-agentcore:DiscoveryUrl": "https://login.example.com/.well-known/openid-configuration"
                }
            }
        }
    ]
}
```

### 대상에 대한 자격 증명 공급자 유형 제한
<a name="example-restrict-target-credential-types"></a>

다음 SCP를 사용하여 게이트웨이 대상을 승인된 자격 증명 공급자 유형으로 제한합니다. 이 예제에서는 게이트웨이의 IAM 역할 또는 호출자 IAM 자격 증명만 사용하도록 게이트웨이 대상을 제한합니다. 대상은 외부 관리형 API 키 또는 OAuth 토큰을 사용할 수 없습니다.

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "RestrictTargetCredentialTypes",
            "Effect": "Deny",
            "Action": [
                "bedrock-agentcore:CreateGatewayTarget",
                "bedrock-agentcore:UpdateGatewayTarget"
            ],
            "Resource": "*",
            "Condition": {
                "StringNotEquals": {
                    "bedrock-agentcore:CredentialProviderType": [
                        "GATEWAY_IAM_ROLE",
                        "CALLER_IAM_CREDENTIALS"
                    ]
                }
            }
        }
    ]
}
```

### 생성할 수 있는 MCP 대상 유형 제한
<a name="example-restrict-target-types"></a>

다음 정책을 사용하여 특정 구성 유형을 사용하는 MCP 대상의 생성을 거부합니다. 이 예제에서는 대상이 직접 MCP 서버 URLs 사용하지 못하도록 합니다.

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DenyDirectMcpServerTargets",
            "Effect": "Deny",
            "Action": [
                "bedrock-agentcore:CreateGatewayTarget",
                "bedrock-agentcore:UpdateGatewayTarget"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "bedrock-agentcore:McpTargetConfigurationType": "mcpServer"
                }
            }
        }
    ]
}
```

### 대상이 프라이빗 엔드포인트를 사용하도록 요구
<a name="example-enforce-private-endpoints"></a>

프라이빗 엔드포인트 유형을 지정하지 않는 대상의 생성을 거부하려면 다음 SCP를 사용합니다. 이렇게 하면 모든 대상 트래픽이 프라이빗 네트워크 내에 유지됩니다.

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EnforcePrivateEndpoints",
            "Effect": "Deny",
            "Action": [
                "bedrock-agentcore:CreateGatewayTarget",
                "bedrock-agentcore:UpdateGatewayTarget"
            ],
            "Resource": "*",
            "Condition": {
                "Null": {
                    "bedrock-agentcore:PrivateEndpointType": "true"
                }
            }
        }
    ]
}
```

### 게이트웨이가 고객 관리형 KMS 키를 사용하도록 요구
<a name="example-require-encryption"></a>

이 SCP를 사용하여 모든 게이트웨이가 서비스 기본값 대신 암호화에 고객 관리형 KMS 키를 사용하도록 요구합니다.

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EnforceCustomerManagedKey",
            "Effect": "Deny",
            "Action": [
                "bedrock-agentcore:CreateGateway",
                "bedrock-agentcore:UpdateGateway"
            ],
            "Resource": "*",
            "Condition": {
                "Null": {
                    "bedrock-agentcore:KmsKeyArn": "true"
                }
            }
        }
    ]
}
```

### 게이트웨이 대상에 대해 승인된 서브넷 적용
<a name="example-enforce-approved-subnets-for-targets"></a>

다음 정책을 사용하여 게이트웨이 대상을 승인된 서브넷으로 제한합니다. 자세한 내용은 [ AgentCore VPC 설정에서 IAM 조건 키 사용을](security-vpc-condition.md) 참조하세요.

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EnforceApprovedSubnets",
            "Effect": "Deny",
            "Action": [
                "bedrock-agentcore:CreateGatewayTarget",
                "bedrock-agentcore:UpdateGatewayTarget"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringNotEquals": {
                    "bedrock-agentcore:subnets": [
                        "subnet-0123456789abcdef0",
                        "subnet-0123456789abcdef1"
                    ]
                }
            }
        }
    ]
}
```