

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

# 고객 관리형 키(CMK)를 사용한 에이전트 리소스 암호화
<a name="cmk-agent-resources"></a>

언제든지 고객 관리형 키를 생성하여 에이전트를 빌드할 때 제공된 다음 에이전트 정보를 사용하여 에이전트의 정보를 암호화할 수 있습니다.

**참고**  
다음 에이전트 리소스는 2025년 1월 22일 이후에 생성된 에이전트에 대해서만 암호화됩니다.


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/cmk-agent-resources.html)

고객 관리형 키를 사용하려면 다음 단계를 완료합니다.

1.  AWS Key Management Service를 사용하여 고객 관리형 키를 만듭니다.

1. 키 정책을 만들고 고객 관리형 키에 연결

## 고객 관리형 키 생성
<a name="create-cmk-agent"></a>

 AWS 관리 콘솔 또는 AWS Key Management Service APIs.

 먼저 `CreateKey` 권한이 있는지 확인한 다음 *AWS Key Management Service 개발자 안내서*의 [대칭 고객 관리형 키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) 단계를 따릅니다.

**키 정책** - 고객 관리형 키에 대한 액세스를 제어합니다. 모든 고객 관리형 키에는 키를 사용할 수 있는 사람과 키를 사용하는 방법을 결정하는 문장이 포함된 정확히 하나의 키 정책이 있어야 합니다. 고객 관리형 키를 만들 때 키 정책을 지정할 수 있습니다. 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [고객 관리형 키에 대한 액세스 관리](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)를 참조하세요.

2025년 1월 22일 이후에 에이전트를 생성하고 고객 관리형 키를 사용하여 에이전트의 정보를 암호화하려는 경우 에이전트 API 작업을 직접 호출하는 사용자 또는 역할에 키 정책에 다음 권한이 있는지 확인합니다.
+ [kms:GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) - AWS KMS 외부에서 사용할 고유한 대칭 데이터 키를 반환합니다.
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) – KMS 키로 암호화된 사이퍼텍스트를 해독합니다.

키를 생성하면 에이전트를 생성할 때 `customerEncryptionKeyArn`으로 사용할 수 있는 키에 대한 `Arn`이 반환됩니다.

## 키 정책을 만들고 고객 관리형 키에 연결
<a name="attach-policy-agent"></a>

고객 관리형 키로 에이전트 리소스를 암호화하는 경우 Amazon Bedrock이 사용자 대신 에이전트 리소스를 암호화하고 복호화하도록 허용하려면 ID 기반 정책 및 리소스 기반 정책을 설정해야 합니다.

**자격 증명 기반 정책**

사용자를 대신하여 에이전트 리소스를 암호화하고 해독하는 에이전트 API를 호출할 수 있는 권한이 있는 IAM 역할 또는 사용자에게 다음 자격 증명 기반 정책을 연결합니다. 이 정책은 API 호출을 수행하는 사용자에게 AWS KMS 권한이 있는지 확인합니다. `${region}`, `${account-id}`, `${agent-id}` 및 `${key-id}`를 적절한 값으로 바꿉니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EncryptAgents",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/${key-id}",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:aws:bedrock:arn": "arn:aws:bedrock:us-east-1:123456789012:agent/${agent-id}"
                }
            }
        }
    ]
}
```

------

**리소스 기반 정책**

Amazon S3의 스키마가 암호화된 작업 그룹을 생성하는 *경우에만* 다음 리소스 기반 정책을 AWS KMS 키에 연결합니다. 다른 사용 사례에 대해서는 리소스 기반 정책을 연결할 필요가 없습니다.

다음 리소스 기반 정책을 연결하려면 필요에 따라 권한 범위를 변경하고 `${region}`, `${account-id}`, `${agent-id}` 및 `${key-id}`를 적절한 값으로 바꿉니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Allow account root to modify the KMS key, not used by Amazon Bedrock.",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/${key-id}"
        },
        {
            "Sid": "Allow Amazon Bedrock to encrypt and decrypt Agent resources on behalf of authorized users",
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/${key-id}",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:aws:bedrock:arn": "arn:aws:bedrock:us-east-1:123456789012:agent/${agent-id}"
                }
            }
        }
    ]
}
```

------

## 고객 관리형 키 변경
<a name="change-cmk"></a>

Amazon Bedrock 에이전트는 *DRAFT* 에이전트와 연결된 고객 관리형 키가 변경되거나 고객 관리형 키에서 AWS 소유 키로 이동할 때 버전이 지정된 에이전트의 재암호화를 지원하지 않습니다. *DRAFT* 리소스의 데이터만 새 키로 다시 암호화됩니다.

버전이 지정된 에이전트의 키를 프로덕션 데이터를 제공하는 데 사용하는 경우, 키에 대한 권한을 삭제하거나 제거하지 않아야 합니다.

버전에서 사용 중인 키를 보고 확인하려면 [GetAgentVersion](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_agent_GetAgentVersion.html)을 직접 호출하고 응답에서 `customerEncryptionKeyArn`을 확인합니다.

# 고객 관리형 키(CMK)를 사용하여 에이전트 세션 암호화
<a name="ltm-permissions"></a>

에이전트에 메모리를 활성화하고 고객 관리형 키로 에이전트 세션을 암호화하는 경우, 고객 관리형 키를 구성하려면 다음 키 정책과 직접 호출 ID IAM 권한을 구성해야 합니다.

**고객 관리형 키 정책**

Amazon Bedrock은 이러한 권한을 사용하여 암호화된 데이터 키를 생성한 다음, 생성된 키를 사용하여 에이전트 메모리를 암호화합니다. Amazon Bedrock에는 생성된 데이터 키를 다른 암호화 컨텍스트로 다시 암호화할 수 있는 권한도 필요합니다. 재암호화 권한은 고객 관리형 키가 다른 고객 관리형 키 또는 서비스 소유 키 간에 전환될 때도 사용됩니다. 자세한 내용은 [Hierarchical Keyring](https://docs.aws.amazon.com//database-encryption-sdk/latest/devguide/use-hierarchical-keyring.html)을 참조하세요.

`$region`, `account-id`, `${caller-identity-role}`을 적절한 값으로 변경합니다.

```
{
    "Version": "2012-10-17",		 	 	 
    {
        "Sid": "Allow access for bedrock to enable long term memory",
        "Effect": "Allow",
        "Principal": {
            "Service": [
                "bedrock.amazonaws.com",
            ],
        },
        "Action": [
            "kms:GenerateDataKeyWithoutPlainText",
            "kms:ReEncrypt*"
        ],
        "Condition": {
            "StringEquals": {
                "aws:SourceAccount": "$account-id"
            },
            "ArnLike": {
                "aws:SourceArn": "arn:aws:bedrock:$region:$account-id:agent-alias/*"
            }
        }
        "Resource": "*"
    },
    {
        "Sid": "Allow the caller identity control plane permissions for long term memory",
        "Effect": "Allow", 
        "Principal": {
            "AWS": "arn:aws:iam::${account-id}:role/${caller-identity-role}"
        },
        "Action": [
            "kms:GenerateDataKeyWithoutPlainText",
            "kms:ReEncrypt*"
        ],
        "Resource": "*",
        "Condition": {
            "StringLike": {
                "kms:EncryptionContext:aws-crypto-ec:aws:bedrock:arn": "arn:aws:bedrock:${region}:${account-id}:agent-alias/*"
            }
        }
    },
    {
        "Sid": "Allow the caller identity data plane permissions to decrypt long term memory",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::${account-id}:role/${caller-identity-role}"
        },
        "Action": [
            "kms:Decrypt"
        ],
        "Resource": "*",
        "Condition": {
            "StringLike": {
                "kms:EncryptionContext:aws-crypto-ec:aws:bedrock:arn": "arn:aws:bedrock:${region}:${account-id}:agent-alias/*",
                "kms:ViaService": "bedrock.$region.amazonaws.com" 
            }
        }
    }
}
```

**에이전트 메모리를 암호화하고 복호화할 수 있는 IAM 권한**

ID 직접 호출 에이전트 API가 메모리가 활성화된 에이전트에 대한 KMS 키를 구성하려면 다음 IAM 권한이 필요합니다. Amazon Bedrock 에이전트는 이러한 권한을 사용하여 호출자 ID가 위의 API 키 정책에 언급된 권한으로 모델을 관리, 훈련, 배포할 수 있는지 확인합니다. 에이전트를 간접적으로 호출하는 API의 경우 Amazon Bedrock 에이전트는 호출자 ID의 `kms:Decrypt` 권한을 사용하여 메모리를 복호화합니다.

`$region`, `account-id`, `${key-id}`을 적절한 값으로 변경합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AgentsControlPlaneLongTermMemory",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKeyWithoutPlaintext", 
                "kms:ReEncrypt*"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/KeyId",
            "Condition": {
                "StringLike": {
                    "kms:EncryptionContext:aws-crypto-ec:aws:bedrock:arn": "arn:aws:bedrock:us-east-1:123456789012:agent-alias/*"
                }
            }
        },
        {
            "Sid": "AgentsDataPlaneLongTermMemory",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:123456789012:key/KeyId",
            "Condition": {
                "StringLike": {
                    "kms:EncryptionContext:aws-crypto-ec:aws:bedrock:arn": "arn:aws:bedrock:us-east-1:123456789012:agent-alias/*"
                }
            }
        }
    ]
}
```

------

# 에이전트를 위한 예방적 보안 모범 사례
<a name="security-best-practice-agents"></a>

Amazon Bedrock 서비스를 위한 다음과 같은 모범 사례를 통해 보안 인시던트를 예방할 수 있습니다.

**보안 연결 사용**

전송 중에 민감한 정보를 안전하게 유지하기 위해 항상 암호화된 연결(예: `https://`(으)로 시작하는 연결)을 사용하세요.

**리소스에 대한 최소 권한 액세스 구현**

Amazon Bedrock 리소스에 대한 사용자 지정 정책을 생성하는 경우 태스크를 수행하는 데 필요한 권한만 부여하세요. 최소한의 권한으로 시작하고 필요에 따라 추가 권한을 부여하는 것이 좋습니다. 오류나 악의적인 공격으로 인해 발생할 수 있는 위험과 영향을 줄이려면 최소 권한 액세스를 구현하는 것이 필수적입니다. 자세한 내용은 [Amazon Bedrock용 Identity and Access Management](security-iam.md) 단원을 참조하십시오.

**고객 데이터가 포함된 에이전트 리소스에는 개인 식별 정보(PII)를 포함하지 마세요.**

에이전트 리소스를 생성, 업데이트 및 삭제할 때(예: [CreateAgent](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_agent_CreateAgent.html) 사용 시) 작업 그룹 이름 및 지식 기반 이름과 같은 고객 관리형 키 사용을 지원하지 않는 필드에는 개인 식별 정보(PII)가 포함되지 않습니다. 고객 관리형 키 사용을 지원하는 필드 목록은 [고객 관리형 키(CMK)를 사용한 에이전트 리소스 암호화](cmk-agent-resources.md) 섹션을 참조하세요.