

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

# Amazon Managed Workflows for Apache Airflow의 데이터 보호
<a name="data-protection"></a>

 AWS [공동 책임 모델](https://aws.amazon.com/compliance/shared-responsibility-model/) Amazon Managed Workflows for Apache Airflow의 데이터 보호에 적용됩니다. 이 모델에 설명된 대로 AWS 는 모든를 실행하는 글로벌 인프라를 보호할 책임이 있습니다 AWS 클라우드. 이 인프라에서 호스팅되는 콘텐츠에 대한 제어를 유지하는 것은 사용자의 책임입니다. 이 콘텐츠에는 사용하는 AWS 서비스 의 보안 구성과 관리 작업이 포함되어 있습니다. 데이터 프라이버시에 대한 자세한 내용은 [데이터 프라이버시 FAQ](https://aws.amazon.com/compliance/data-privacy-faq)를 참조하세요. 유럽의 데이터 보호에 대한 자세한 내용은 *AWS 보안 블로그*의 [AWS 공동 책임 모델 및 GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 블로그 게시물을 참조하세요.

데이터 보호를 위해 자격 AWS 계정 증명을 보호하고 AWS Identity and Access Management (IAM)을 사용하여 개별 사용자 계정을 설정하는 것이 좋습니다. 이러한 방식에서는 각 사용자에게 자신의 직무를 충실히 이행하는 데 필요한 권한만 부여됩니다. 또한 다음과 같은 방법으로 데이터를 보호하는 것이 좋습니다.
+ 각 계정에 다중 인증(MFA)을 사용합니다.
+ SSL/TLS를 사용하여 AWS 리소스와 통신합니다. TLS 1.2 이상을 권장합니다.
+ 를 사용하여 API 및 사용자 활동 로깅을 설정합니다 AWS CloudTrail.
+  AWS 암호화 솔루션을 서비스 내의 AWS 모든 기본 보안 제어와 함께 사용합니다.
+ Amazon S3에 저장된 개인 데이터를 검색하고 보호하는 데 도움이 되는 Amazon Macie와 같은 고급 관리형 보안 서비스를 사용합니다.

고객의 이메일 주소와 같은 기밀 정보나 중요한 정보는 태그나 **이름** 필드와 같은 자유 양식 필드에 입력하지 않는 것이 좋습니다. 여기에는 Amazon MWAA 또는 기타 AWS 서비스에서 콘솔 AWS CLI, API 또는 AWS SDKs를 사용하여 작업하는 경우가 포함됩니다. 이름에 사용되는 태그 또는 자유 형식 필드에 입력하는 모든 데이터는 청구 또는 진단 로그에 사용될 수 있습니다. 외부 서버에 URL을 제공할 때 해당 서버에 대한 요청을 검증하기 위해 자격 증명을 URL에 포함해서는 안 됩니다.

# Amazon MWAA에서 암호화
<a name="encryption"></a>

다음 주제는 Amazon MWAA에서 저장 데이터와 전송 중인 데이터를 보호하는 방법을 설명합니다. 이 정보를 사용하여 Amazon MWAA가 AWS KMS 와 통합되어 저장 데이터를 암호화하는 방법과 전송 중 전송 계층 보안(TLS) 프로토콜을 사용하여 데이터를 암호화하는 방법을 알아봅니다.

**Topics**
+ [저장된 데이터 암호화](#encryption-at-rest)
+ [전송 중 암호화](#encryption-in-transit)

## 저장된 데이터 암호화
<a name="encryption-at-rest"></a>

Amazon MWAA에서 *저장* 데이터는 서비스가 영구 매체에 저장하는 데이터입니다.

저장 데이터 암호화를 위해 [AWS소유 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)를 사용하거나, 선택적으로 환경을 만들 때 추가 암호화를 위해 [고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)를 제공할 수도 있습니다. 고객 관리형 KMS 키를 사용하기로 선택한 경우 환경에서 사용 중인 다른 AWS 리소스 및 서비스와 동일한 계정에 있어야 합니다.

고객 관리형 KMS 키를 사용하려면 CloudWatch 액세스에 필요한 정책 설명을 키 정책에 연결해야 합니다. 사용자 환경에 고객 관리형 KMS 키를 사용하는 경우, Amazon MWAA는 사용자를 대신하여 4가지 [권한](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)을 부여합니다. Amazon MWAA에서 고객 관리형 KMS 키에 연결하는 권한에 대한 자세한 내용은 [데이터 암호화를 위한 고객 관리형 키](custom-keys-certs.md)를 참조하세요.

고객 관리형 KMS 키를 지정하지 않으면 기본적으로 Amazon MWAA는 AWS 소유 KMS 키를 사용하여 데이터를 암호화하고 해독합니다. Amazon MWAA에서 데이터 암호화를 관리하려면 AWS 소유 KMS 키를 사용하는 것이 좋습니다.

**참고**  
Amazon MWAA에서 AWS 소유 또는 고객 관리형 KMS 키의 저장 및 사용에 대한 비용은 사용자가 지불합니다. 자세한 내용은 [AWS KMS 요금](https://aws.amazon.com/kms/pricing/)을 참조하세요.

### 암호화 아티팩트
<a name="encryption-at-rest-services"></a>

Amazon MWAA 환경을 생성할 때는 [AWS소유 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) 또는 [고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)를 지정하여 저장 중 암호화에 사용되는 암호화 아티팩트를 지정합니다. Amazon MWAA는 사용자가 지정한 키에 필요한 [권한 부여](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)를 추가합니다.

**Amazon S3** - Amazon S3 데이터는 서버 측 암호화(SSE)를 이용하여 객체 수준에서 암호화됩니다. Amazon S3 암호화 및 복호화는 DAG 코드 및 지원 파일이 저장되는 Amazon S3 버킷에서 수행됩니다. 객체는 Amazon S3에 업로드될 때 암호화되고 Amazon MWAA 환경에 다운로드될 때 복호화됩니다. 고객 관리형 KMS 키를 사용하는 경우, Amazon MWAA는 기본 설정으로 이 키를 사용하여 Amazon S3 버킷의 데이터를 읽고 해독합니다.

**CloudWatch Logs** - AWS 소유 KMS 키를 사용하는 경우 CloudWatch Logs로 전송된 Apache Airflow 로그는 CloudWatch Logs의 AWS 소유 KMS 키와 함께 SSE를 사용하여 암호화됩니다. 고객 관리 KMS 키를 사용하는 경우, KMS 키에 [키 정책](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)을 추가하여 CloudWatch Logs에서 이 키를 사용할 수 있게 해주어야 합니다.

**Amazon SQS** - Amazon MWAA는 사용자 환경을 위해 하나의 Amazon SQS 대기열을 생성합니다. Amazon MWAA는 AWS 소유 KMS 키 또는 지정한 고객 관리형 KMS 키와 함께 SSE를 사용하여 대기열과 주고받는 데이터 암호화를 처리합니다. AWS 소유 또는 고객 관리형 KMS 키를 사용하는지 여부에 관계없이 실행 역할에 Amazon SQS 권한을 추가해야 합니다.

**Aurora PostgreSQL** - Amazon MWAA는 사용자 환경에 맞는 PostgreSQL 클러스터 하나를 생성합니다. Aurora PostgreSQL은 SSE를 사용하여 AWS 소유 또는 고객 관리형 KMS 키로 콘텐츠를 암호화합니다. 고객 관리형 KMS 키를 사용하는 경우, Amazon RDS는 이 키에 최소 두 가지 권한(클러스터용과 데이터베이스 인스턴스용)을 추가합니다. 고객 관리형 KMS 키를 여러 환경에서 사용하기로 선택한 경우, Amazon RDS에서 추가 권한을 부여할 수 있습니다. 자세한 내용은 [Amazon RDS의 데이터 보호](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/DataDurability.html)를 참조하세요.

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

전송 중 데이터는 네트워크를 통해 이동할 때 도청당할 수 있는 데이터로 칭하기도 합니다.

전송 계층 보안(TLS)은 환경의 Apache Airflow 구성 요소와 Amazon S3와 같이 Amazon MWAA와 통합되는 기타 AWS 서비스 간에 전송 중인 Amazon MWAA 객체를 암호화합니다. Amazon S3 암호화에 대한 자세한 내용은 [암호화를 사용한 데이터 보호](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingEncryption.html)를 참조하세요.

# 암호화를 위한 고객 관리형 키 사용
<a name="custom-keys-certs"></a>

사용자 환경의 데이터 암호화를 위해 [고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)를 옵션으로 제공할 수 있습니다. 고객 관리형 KMS 키는 Amazon MWAA 환경 인스턴스 및 워크플로용 리소스를 저장하는 Amazon S3 버킷과 동일한 리전에 생성해야 합니다. 지정하는 고객 관리형 키가 환경을 구성하는 데 사용하는 계정이 아닌 다른 계정에 있는 경우, 크로스 계정 액세스를 위해 ARN을 이용하여 해당 키를 지정해 주어야 합니다. 키 생성에 대한 자세한 내용은 *AWS Key Management Service 개발자 가이드*의 [키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)을 참조하세요.

## 지원되는 항목
<a name="custom-keys-grants-support"></a>


| AWS KMS 기능 | 지원 | 
| --- | --- | 
|  [AWS KMS 키 ID 또는 ARN](https://docs.aws.amazon.com/kms/latest/developerguide/find-cmk-id-arn.html)  |  예  | 
|  [AWS KMS 키 별칭](https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html)  |  아니요  | 
|  [AWS KMS 다중 리전 키](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)  |  아니요  | 

## 암호화를 위한 권한 사용
<a name="custom-keys-grants-provide"></a>

이 주제는 데이터를 암호화하고 복호화하기 위해 Amazon MWAA에서 고객 관리형 KMS 키에 연결하는 권한을 설명합니다.

### 작동 방식
<a name="custom-keys-certs-grants"></a>

고객 관리형 KMS 키에 AWS KMS 대해에서 지원하는 두 가지 리소스 기반 액세스 제어 메커니즘은 [키 정책](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) 및 [권한 부여](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)입니다.

키 정책은 권한이 대부분 정적이고 동기 서비스 모드에 이용되는 경우에 사용합니다. 권한 부여는 서비스에서 자체 또는 다른 계정에 대해 서로 다른 액세스 권한을 정의해야 하는 경우와 같이 보다 동적이고 세분화된 권한이 필요한 경우에 사용됩니다.

Amazon MWAA는 네 가지 권한 부여 정책을 사용하여 고객 관리형 KMS 키에 연결합니다. 이는 CloudWatch Log, Amazon SQS 대기열, Aurora PostgreSQL 데이터베이스, Secrets Manager 암호, Amazon S3 버킷 및 DynamoDB 테이블에 저장된 데이터를 암호화하는 환경에 요구되는 세분화된 권한 때문입니다.

Amazon MWAA 환경을 생성하고 고객 관리형 KMS 키를 지정하면, Amazon MWAA는 사용자의 고객 관리형 KMS 키에 권한 부여 정책을 연결합니다. 이러한 정책을 통해 `airflow.us-east-1.amazonaws.com`의 Amazon MWAA는 고객 관리형 KMS 키를 사용하여 Amazon MWAA 소유 리소스를 사용자를 대신하여 암호화할 수 있습니다.

Amazon MWAA는 사용자를 대신해서 추가 권한을 생성하여 지정된 KMS 키에 연결합니다. 여기에는 환경을 삭제하는 경우 권한 부여를 사용 중지하고, 클라이언트 측 암호화(CSE)에 고객 관리형 KMS 키를 사용하고, Secrets Manager에서 고객 관리형 키로 보호되는 보안 암호에 액세스해야 하는 AWS Fargate 실행 역할에 대한 정책이 포함됩니다.

## 권한 부여 정책
<a name="custom-keys-certs-grant-policies"></a>

Amazon MWAA는 사용자를 대신하여 고객 관리형 KMS 키에 다음과 같은 [리소스 기반 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) 권한을 추가합니다. 이러한 정책을 통해 권한 피부여자와 주체(Amazon MWAA)가 정책에 정의된 작업을 수행할 수 있습니다.

### 권한 1: 데이터 플레인 리소스를 생성하는 데 사용
<a name="custom-keys-certs-grant-policies-1"></a>

```
{
  "Name": "mwaa-grant-for-env-mgmt-role-environment name",
  "GranteePrincipal": "airflow.us-east-1.amazonaws.com",
  "RetiringPrincipal": "airflow.us-east-1.amazonaws.com",
  "Operations": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:CreateGrant",
    "kms:DescribeKey",
    "kms:RetireGrant"
  ]
}
```

### 권한 2: `ControllerLambdaExecutionRole` 액세스에 사용
<a name="custom-keys-certs-grant-policies-2"></a>

```
{
  "Name": "mwaa-grant-for-lambda-exec-environment name",
  "GranteePrincipal": "airflow.us-east-1.amazonaws.com",
  "RetiringPrincipal": "airflow.us-east-1.amazonaws.com",
  "Operations": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:DescribeKey",
    "kms:RetireGrant"
  ]
}
```

### 권한 3: `CfnManagementLambdaExecutionRole` 액세스에 사용
<a name="custom-keys-certs-grant-policies-3"></a>

```
{
  "Name": " mwaa-grant-for-cfn-mgmt-environment name",
  "GranteePrincipal": "airflow.us-east-1.amazonaws.com",
  "RetiringPrincipal": "airflow.us-east-1.amazonaws.com",
  "Operations": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:DescribeKey"
  ]
}
```

### 권한 4: 백엔드 암호에 액세스하기 위한 Fargate 실행 역할에 사용
<a name="custom-keys-certs-grant-policies-4"></a>

```
{
  "Name": "mwaa-fargate-access-for-environment name",
  "GranteePrincipal": "airflow.us-east-1.amazonaws.com",
  "RetiringPrincipal": "airflow.us-east-1.amazonaws.com",
  "Operations": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:DescribeKey",
    "kms:RetireGrant"
  ]
}
```

## 고객 관리형 키에 대한 키 정책 연결
<a name="custom-keys-certs-grant-policies-attach"></a>

Amazon MWAA에서 자체 고객 관리형 KMS 키를 사용하기로 선택한 경우, Amazon MWAA에서 데이터를 암호화하는 데 사용할 수 있도록 다음 정책을 그 키에 연결해 주어야 합니다.

Amazon MWAA 환경에 사용한 고객 관리형 KMS 키가 아직 CloudWatch와 함께 작동하도록 구성되어 있지 않다면, 암호화된 CloudWatch Log를 허용하도록 [키 정책](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)을 업데이트해야 합니다. 자세한 내용은 [AWS Key Management Service 서비스를 사용하여 CloudWatch에서 로그 데이터 암호화](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)를 참조하세요.

다음 예에서는 CloudWatch Log에 관한 주요 정책을 나타냅니다. 리전에 대해 제공된 샘플 값을 대체합니다.

```
{
  "Effect": "Allow",
  "Principal": {
    "Service": "logs.us-east-1.amazonaws.com"
  },
  "Action": [
    "kms:Encrypt*",
    "kms:Decrypt*",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:Describe*"
  ],
  "Resource": "*",
  "Condition": {
    "ArnLike": {
      "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:us-east-1:*:*"
    }
  }
}
```