

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

# 사용자 지정 이벤트 버스에서 이벤트 암호화
<a name="eb-custom-bus-encryption"></a>

버스는 이벤트 페이로드, 이벤트 메타데이터, 구독자 필터, 구독자 대상 구성 등 저장하는 모든 것을 암호화합니다. 기본적으로가 AWS 소유한 키를 사용하며 사용자는 아무 것도 구성하지 않습니다. 대신 자체 AWS KMS 키로 버스를 암호화하려면 버스를 생성하거나 업데이트할 `EncryptionConfiguration.KmsKeyIdentifier` 때 예를 들어를 설정하고의 세 문[키 정책 작성](#eb-custom-bus-encryption-key-policy)을 키 정책에 `aws eventsv2 create-event-bus --name orders --encryption-configuration KmsKeyIdentifier=arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`추가합니다.

## 버스를 암호화하는 키 선택
<a name="eb-custom-bus-encryption-at-rest"></a>

Omit `EncryptionConfiguration` 및 EventBridge는 AWS 소유 키로 256비트 AES로 버스를 암호화합니다. 해당 키를 보거나 관리할 수 없으며, CloudTrail 로그에 해당 키의 사용이 표시되지 않고, 비용이 들지 않으며, 할당량에 포함되지 않고 매월 AWS 교체됩니다. AWS KMS 는 이러한 버스에 `EncryptionConfiguration` 대해 아니요를 `DescribeEventBus` 반환합니다. 자세한 내용은 *AWS KMS 개발자 안내서*의 [AWS 소유 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)를 참조하세요.

Set `EncryptionConfiguration.KmsKeyIdentifier` 및 EventBridge는 고객 관리형 키로 버스를 암호화합니다. 그런 다음 키 정책, 교체, 비활성화 및 삭제를 제어하고 CloudTrail에서 키의 모든 사용을 볼 수 있습니다. 키에는 AWS KMS 월별 키 요금 및 요청 요금이 발생합니다. EventBridge는 캐시된 브랜치 키( 참조[버스가 키를 사용하는 방법](#eb-custom-bus-encryption-branch-key))로 로컬에서 이벤트를 암호화하고 복호화하기 때문에 캐시 기간당 버스당 몇 개의 AWS KMS 요청과 교체를 수행합니다. 요청 수는 이벤트 볼륨에 따라 증가하지 않습니다. 자세한 내용은 [AWS KMS 요금](https://aws.amazon.com/kms/pricing/)을 참조하세요.

`KmsKeyIdentifier`는 키 ID, 키 ARN,와 같은 별칭 이름 `alias/orders`또는 별칭 ARN을 허용합니다. EventBridge는 계정 및 리전에서 베어 키 ID 또는 별칭 이름을 검증하므로 다른 계정의 키는 전체 키 ARN으로 이름이 지정되어야 합니다. 별칭은 버스를 생성하거나 업데이트할 때 해당 키로 확인되며, 생성 및 설명 응답은 해당 키 ARN을 반환합니다. 나중에 별칭을 다시 지정해도 버스에서 사용하는 키는 변경되지 않습니다. 키는 대칭 암호화 키(`SYMMETRIC_DEFAULT`, 키 사용 `ENCRYPT_DECRYPT`)여야 합니다. EventBridge는 비대칭 키와 HMAC 키를 거부합니다. 다중 리전 키는 일반 키로 작동합니다. EventBridge는 리전 간에 데이터나 키 구성 요소를 복제하지 않으므로 버스 리전의 복제본 이름을 지정합니다. 가져온 키 구성 요소가 있는 키와 외부 키 스토어의 키가 지원됩니다.

```
aws eventsv2 create-event-bus \
    --name orders \
    --encryption-configuration KmsKeyIdentifier=arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
```

키는 버스가 보관하는 이벤트 페이로드 및 메타데이터, 전송 중 각 구독자에 대해 보관되는 사본, 구독자 필터 및 대상 구성을 암호화합니다. EventBridge에는 이벤트를 라우팅하고 조회하는 데 필요한 버스 이름, ARN 및 계정 ID, FIFO 전송을 주문하는 이벤트 그룹 ID, 민감한 데이터를 입력하지 마십시오. EventBridge가 단방향 해시로 저장하는 중복 제거 ID, 내부 일치 결과 및 시퀀스 번호 등 네 가지 사물이 키로 암호화되지 않습니다. 스토리지 서비스는 자체 키로 저장 데이터를 암호화합니다.

## 버스가 키를 사용하는 방법
<a name="eb-custom-bus-encryption-branch-key"></a>

고객 관리형 키를 구성하면 EventBridge는 AWS 암호화 SDK [계층적 키링](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/use-hierarchical-keyring.html)에 따라 서비스 관리형 테이블에 저장되고 키로 래핑된 중간 AWS KMS 키인 버스용 *브랜*치 키를 생성합니다. EventBridge는 각 이벤트의 브랜치 키에서 데이터 키를 추출하므로 이벤트당 AWS KMS 호출 없이 로컬에서 이벤트를 암호화하고 복호화합니다.
+ 이벤트를 게시하면 EventBridge는 이벤트를 스토리지에 쓰기 전에 버스의 브랜치 키로 암호화합니다.
+ EventBridge는 이벤트를 전송할 때 이벤트를 복호화하여 필터를 평가하고 전달합니다. 대상은 복호화된 이벤트를 수신합니다. 대상에서의 암호화는 대상 서비스의 책임입니다.
+ EventBridge는 브랜치 키를 최대 15분 동안 메모리에 캐시합니다. 캐시가 만료되면 키`kms:Decrypt`에서를 호출하여 브랜치 키를 다시 언래핑합니다.
+ EventBridge는 약 30일마다 새 브랜치 키 버전을 생성하고 이전 버전을 유지하므로 이전에 작성된 이벤트는 버스의 보존 기간 동안 읽을 수 있습니다.

EventBridge는 두 경로에서 키에 도달하며 키 정책은 두 경로를 모두 허용해야 합니다. API 호출이 진행되는 동안 실행되는 검사의 경우 호출에서 전달된 자격 증명을 사용합니다. 이벤트 전송 및 브랜치 키 관리와 같이 호출이 반환된 후 수행하는 작업의 경우 자격 증명을 더 이상 사용할 수 없으므로 `events.amazonaws.com` 서비스 보안 주체 역할을 합니다.

## 키 정책 작성
<a name="eb-custom-bus-encryption-key-policy"></a>

키 정책에 세 개의 명령문을 추가합니다. 하나는 보안 주체가 키를 검증할 수 있도록 하는 명령문이고, 다른 하나는 보안 주체가 자격 증명으로 EventBridge가 실행하는 액세스 검사를 통과할 수 있도록 하는 명령문이고, 다른 하나는 `events.amazonaws.com` 서비스 보안 주체를 위한 명령문입니다. 버스에 대한 EventBridge의 모든 AWS KMS 요청은 두 액세스 경로 모두에서 버스 ARN과 `aws:events:event-busv2:arn` 함께 암호화 컨텍스트 키를 전달하므로 두 번째 및 세 번째 문은 하나의 버스로 범위가 지정됩니다. 버스 ARN은 생성 시 EventBridge가 생성하는 접미사로 끝나므로 `StringLike` 및 후행와 일치시킵니다`/*`. 자체 키 관리 문도 정책에 유지합니다. 다음 예제에서 계정, 리전, 역할 및 버스 이름을 바꿉니다.

```
{
    "Version": "2012-10-17",
    "Id": "eventbridge-custom-event-bus-key-policy",
    "Statement": [
        {
            "Sid": "AllowKeyValidationThroughEventBridge",
            "Effect": "Allow",
            "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" },
            "Action": "kms:DescribeKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": { "kms:ViaService": "events.us-east-1.amazonaws.com" }
            }
        },
        {
            "Sid": "AllowKeyUseThroughEventBridge",
            "Effect": "Allow",
            "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" },
            "Action": [
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:GenerateDataKeyWithoutPlaintext",
                "kms:ReEncryptFrom",
                "kms:ReEncryptTo"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": { "kms:ViaService": "events.us-east-1.amazonaws.com" },
                "StringLike": {
                    "kms:EncryptionContext:aws:events:event-busv2:arn": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/*"
                }
            }
        },
        {
            "Sid": "AllowEventBridgeServicePrincipal",
            "Effect": "Allow",
            "Principal": { "Service": "events.amazonaws.com" },
            "Action": [
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:GenerateDataKeyWithoutPlaintext",
                "kms:ReEncryptFrom",
                "kms:ReEncryptTo"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "kms:EncryptionContext:aws:events:event-busv2:arn": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/*"
                }
            }
        }
    ]
}
```

`AllowKeyValidationThroughEventBridge`를 사용하면 보안 주체가 버스를 생성하거나 업데이트할 때 키를 검증할 수 있습니다. EventBridge는 자격 증명`kms:DescribeKey`으로를 호출하여 키가 존재하고 대칭이며 활성화되어 있는지 확인합니다.는 암호화 컨텍스트를 `DescribeKey` 사용하지 않으므로이 문에는 아무것도 없습니다.는 EventBridge를 통해 들어오는 요청으로 `kms:ViaService` 제한합니다.

`AllowKeyUseThroughEventBridge`는 서비스에서 나중에 비동기 작업을 사용할 수 없는 키를 구성할 수 없도록 키 구성을 수락하고 암호화된 데이터를 쓰거나 읽기 전에 EventBridge가 자격 증명으로 실행하는 액세스 검사를 승인합니다. 검사는 AWS KMS 모의 실행으로, 권한을 부여하지만 아무것도 암호화 및 복호화하지 않습니다. 표준 AWS KMS 요청으로 청구되며 AWS KMS 요청 할당량에 포함됩니다. *AWS KMS 개발자 안내서*의 [권한 테스트를 참조하세요](https://docs.aws.amazon.com/kms/latest/developerguide/testing-permissions.html). 각 작업은 이후 작업이 수행하는 작업을 확인합니다.
+ `CreateEventBus` 고객 관리형 키를 사용하여 `kms:GenerateDataKeyWithoutPlaintext`브랜치 키 생성 및 이후 읽기가 수행하는 작업인 `kms:Decrypt`, `kms:ReEncryptFrom``kms:ReEncryptTo`, 및를 확인합니다.
+ `UpdateEventBus`는 현재 키와 `kms:Encrypt` `kms:Decrypt` 새 키에 `kms:Decrypt` 대한 키 검사를 변경합니다.
+ `PutEvents` 고객 관리형 키 검사가 있는 버스`PutRawEvents`의 및 `kms:Decrypt`. 버스의 이벤트를 다시 읽을 수 없는 생산자도 해당 이벤트를 쓸 수 없습니다. 그렇지 않으면 `AccessDeniedException` 이름 지정과 함께 게시 호출이 실패합니다`KMS_ACCESS_DENIED`.
+ `CreateSubscriber` 구독자 구성이 버스 키로 암호화`kms:Decrypt`되므로 및를 `UpdateSubscriber` 확인합니다.

따라서이 문의는 버스`Principal`를 생성 또는 업데이트하거나, 버스에 게시하거나, 버스에 구독자를 생성하는 모든 역할을 포함해야 합니다. 역할 ARNs을 나열하거나 계정의 IAM 정책에 결정을 위임할 계정 루트 보안 주체의 이름을 지정합니다.

`AllowEventBridgeServicePrincipal`는 호출이 완료된 후 EventBridge가 서비스로 수행하는 작업을 승인합니다. `kms:GenerateDataKeyWithoutPlaintext`, `kms:ReEncryptFrom`,는 버스의 브랜치 키와 교체 시 새 버전을 `kms:ReEncryptTo` 생성합니다.는 브랜치 키를 `kms:Decrypt` 언래핑하여 이벤트를 전송하고, 구독자 구성을 로드하고, 설명 호출 시 복호화된 구성을 반환합니다. `kms:Decrypt`는 버스 키를 변경할 때 브랜치 키를 `kms:Encrypt` 리래핑합니다.

키는 중앙 보안 계정과 같은 다른 계정에 있을 수 있습니다. 버스 계정의 역할을 처음 두 개의 보안 주체로 사용하고 암호화 컨텍스트 값에 버스 계정의 버스 ARN을 사용하여 세 문을 모두 해당 키의 정책에 넣습니다. 버스 계정의 역할에는 키 ARN에 대해 동일한 AWS KMS 작업을 허용하는 IAM 자격 증명 정책도 필요합니다. 교차 계정 AWS KMS 액세스에는 양쪽에 대한 권한이 필요하기 때문입니다. 전체 키 ARN을 기준으로 키의 이름을 지정합니다.

## 키 정책을 하나의 버스로 범위 지정
<a name="eb-custom-bus-encryption-scope"></a>

문을 하나의 버스로 제한하려면에서 조건을 지정합니다`kms:EncryptionContext:aws:events:event-busv2:arn`. 버스가 존재하기 전에 이전 정책과 `/*`같이 후행와 `StringLike` 함께를 사용합니다. 기존 버스의 경우에서 `DescribeEventBus` 반환하는 정확한 ARN을와 일치시킬 수 있습니다`StringEquals`. 자격 증명으로 이루어진 모든 요청은 `kms:ViaService`로도 채워지`events.{{region}}.amazonaws.com`므로 EventBridge를 통해서만 보안 주체가 키를 사용하도록 제한할 수 있습니다.

EventBridge가 서비스 보안 주체로 수행하는 요청은 `aws:SourceArn` 버스 ARN 및 `aws:SourceAccount` 버스 계정으로 전달됩니다. EventBridge가 자체 버스에만 키를 사용할 수 `AllowEventBridgeServicePrincipal` 있도록에 추가합니다.

```
"Condition": {
    "StringEquals": { "aws:SourceAccount": "111122223333" },
    "ArnLike": { "aws:SourceArn": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/*" }
}
```

개별 게시 및 전송 작업은 캐시된 브랜치 키를 사용하며 이벤트당 키 정책을 다시 확인하지 않습니다. EventBridge의 액세스를 제거하는 정책을 포함한 키 정책 변경은 캐시된 브랜치 키가 만료될 때 15분 이내에 버스의 데이터 처리에 적용됩니다.

## 버스에서 키 변경 또는 제거
<a name="eb-custom-bus-encryption-change"></a>

를 호출`UpdateEventBus`하여 AWS 소유 키에서 고객 관리형 키로, 한 고객 관리형 키에서 다른 고객 관리형 키로 또는 다시 AWS 소유 키로 버스를 이동합니다. AWS 소유 키로 돌아가려면 `EncryptionConfiguration` 현재 키와 빈 키를 로 전송합니다`--encryption-configuration '{}'`. `EncryptionConfiguration` 완전히 생략하고 버스는 현재 키를 유지합니다.

버스가 들어가`UPDATING`고 EventBridge가 새 키 아래에 브랜치 키를 다시 래핑한 다음 로 돌아갑니다`ACTIVE`. 브랜치 키 자체는 변경되지 않으므로 EventBridge는 저장된 이벤트를 다시 암호화하지 않고, 변경 사항은 버스가 보유한 모든 항목을 빠르게 완료하며, 이전에 작성된 이벤트는 이전 키의 모든 상태를 읽을 수 있습니다. `ACTIVE`가 버스에 새 키를 `DescribeEventBus` 표시하면 이전 키를 비활성화할 수 있습니다.

EventBridge가 새 키를 사용할 수 없는 경우 버스는에 정체`UPDATE_FAILED`되어 이전 키로 계속 작동합니다. 여전히 이벤트를 수락 및 전송하고 이전 키를 `DescribeEventBus` 계속 보고합니다. 실패한 키는 버스 키가 되지 않습니다. 정책을 수정한 후 사용 가능한 키 또는 동일한 키를 사용하여를 `UpdateEventBus` 다시 호출하면 버스가 로 돌아갑니다`ACTIVE`. 키에서 생성이 실패하는 버스는 거부`CREATE_FAILED``StateReason`라는 이름으로 AWS KMS 에 고정`UpdateEventBus`되고, 해당 상태는 만 수락하며`DeleteEventBus`, 수락하는 상태의 이름이 인 메시지와 함께 거부됩니다`[ACTIVE, UPDATE_FAILED]`. 키 정책을 수정하고 버스를 삭제한 다음 다시 생성합니다. 상태는 섹션을 참조하세요[버스 상태 및 각 상태별 허용 사항](eb-custom-bus-create.md#eb-custom-bus-lifecycle-states).

키에서 [자동 키 교체](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)를 활성화하면는 동일한 키 ARN 뒤에 있는 백업 구성 요소를 AWS KMS 교체합니다. 브랜치 키는 마지막으로 래핑된 재료로 래핑된 상태로 유지되며, 약 30일마다 생성된 다음 브랜치 키 버전은 현재 재료를 사용합니다. 따라서 AWS KMS 교체는 약 한 달 내에 버스에 도달합니다.

## 키를 사용할 수 없게 되는 경우
<a name="eb-custom-bus-encryption-key-unusable"></a>

키를 비활성화하거나 삭제를 예약하거나 EventBridge의 액세스를 제거하면 버스는 캐시된 브랜치 키가 만료될 때까지 15분 이내에 계속 작동합니다. 그러면 AWS KMS 액세스 오류와 함께 버스에 게시가 실패하고 전송이 일시 중지됩니다. EventBridge는 이미 수락한 이벤트를 삭제하지 않고 배달 못한 편지 대기열로 전송하지 않습니다. 키 액세스 실패는 수정할 수 있는 조건이므로 보류했다가 다시 시도합니다. 액세스를 복원하면 게시 및 전송이 자체적으로 재개됩니다. 중단이 버스의 보존 기간을 벗어나지 않는 한 이벤트가 손실되지 않습니다.

키 삭제는 영구적입니다. 가 버스에 구성된 키를 AWS KMS 삭제한 후에는 EventBridge가 더 이상 버스의 브랜치 키를 언래핑할 수 없으며, 버스에 저장된 모든 이벤트는 나머지 보존 기간 동안 읽을 수 없습니다. 먼저 키를 비활성화하고 효과를 확인한 다음 삭제만 예약합니다. *AWS KMS 개발자 안내서*의 [AWS KMS 키 삭제](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html)를 참조하세요. `DeleteEventBus`에는 키가 필요하지 않습니다. 키가 비활성화되거나 삭제되면 성공합니다.

## CloudTrail에서 키 사용 모니터링
<a name="eb-custom-bus-encryption-cloudtrail"></a>

고객 관리형 키에 대한 EventBridge의 모든 요청은 CloudTrail에 기록됩니다. [ CloudTrail을 사용하여 AWS KMS API 호출 로깅](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html)을 참조하세요. 다음 표에는 예상할 수 있는 이벤트가 나열되어 있습니다.


| `eventName` | 일시 | 자격 증명 호출 | 
| --- | --- | --- | 
| DescribeKey | 버스 생성 및 업데이트에 대한 키 검증 | EventBridge를 통해 보안 주체 | 
| Decrypt, Encrypt, GenerateDataKeyWithoutPlaintext, ReEncrypt (드라이 런) | 버스 생성 및 업데이트, 게시, 구독자 생성 및 업데이트에 대한 액세스 검사 | EventBridge를 통한 보안 주체 | 
| GenerateDataKeyWithoutPlaintext, ReEncrypt | 버스 생성 시 브랜치 키 생성 및 약 30일마다 브랜치 키 교체 | events.amazonaws.com | 
| Decrypt | 캐시 만료 시 브랜치 키 언래핑: 이벤트 전송, 구독자 구성 로드, 호출 설명 | events.amazonaws.com | 
| Decrypt 및 Encrypt | 가 키를 UpdateEventBus 변경할 때 브랜치 키 다시 래핑 | events.amazonaws.com | 

CloudTrail은 `ReEncrypt` 호출을 하나의 이벤트로 기록하며, `kms:ReEncryptFrom` 및 `kms:ReEncryptTo` 권한 모두 호출을 승인합니다. 를 표시하는 모의 실행 항목은 구성의 결함이 아니라 액세스 확인을 `DryRunOperationException` 통과하는 것입니다.를 표시하는 항목은 호출자에게 확인 중인 권한이 없음을 `AccessDeniedException` 의미합니다. `requestParameters.encryptionContext` 모든 항목의 에는 버스 ARN`aws:events:event-busv2:arn`이 포함됩니다. 브랜치 키 항목에는 계층적 키링의 필드`branch-key-id`인 (버스 ARN), `type`, `create-time`, `tablename`, 및 `hierarchy-version`도 포함됩니다`kms-arn`. 이벤트별 암호화 및 복호화는 캐시된 브랜치 키에서 로컬로 파생된 데이터 키를 사용하므로 개별 이벤트는 CloudTrail에 표시되지 않습니다.

## 전송 중 암호화
<a name="eb-custom-bus-encryption-transit"></a>

모든 사용자 지정 이벤트 버스 API 호출은 HTTPS 엔드포인트 로 이동하며`eventsv2.{{region}}.amazonaws.com`, 모든 요청은 자격 증명으로 서명해야 합니다. FIPS 엔드포인트 `eventsv2-fips.{{region}}.amazonaws.com`는 필요한 곳에서 사용할 수 있습니다. 일반적인 EventBridge 데이터 보호는 섹션을 참조하세요[Amazon EventBridge 보안](eb-security.md).