

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

# Amazon MWAA 환경에 대한 액세스 관리
액세스 관리

Amazon Managed Workflows for Apache Airflow는 환경에서 사용하는 다른 AWS 서비스 및 리소스를 사용하도록 허용되어야 합니다. 또한 AWS Identity and Access Management (IAM)에서 Amazon MWAA 환경 및 Apache Airflow UI에 액세스할 수 있는 권한을 부여받아야 합니다. 이 섹션에서는 환경의 AWS 리소스에 대한 액세스 권한을 부여하는 데 사용되는 실행 역할과 권한을 추가하는 방법, Amazon MWAA 환경 및 Apache Airflow UI에 액세스하는 데 필요한 AWS 계정 권한을 설명합니다.

**Topics**
+ [

# Amazon MWAA 환경 액세스
](access-policies.md)
+ [

# Amazon MWAA의 서비스 연결 역할
](mwaa-slr.md)
+ [

# Amazon MWAA 실행 역할
](mwaa-create-role.md)
+ [

# 교차 서비스 혼동된 대리인 방지
](cross-service-confused-deputy-prevention.md)
+ [

# Apache Airflow 액세스 모드
](configuring-networking.md)

# Amazon MWAA 환경 액세스


Amazon Managed Workflows for Apache Airflow를 사용하려면 필요한 권한이 있는 계정과 IAM 엔티티를 사용해야 합니다. 이 주제에서는 Amazon Managed Workflows for Apache Airflow 환경을 위해 Apache Airflow 개발 팀과 Apache Airflow 사용자에게 적용할 수 있는 액세스 정책에 대해 설명합니다.

Amazon MWAA 리소스에 액세스하려면 임시 보안 인증 정보를 사용하고 그룹 및 역할을 사용하여 페더레이션 ID를 구성하는 것이 좋습니다. 모범 사례는 정책을 IAM 사용자에게 직접 연결하지 않는 것입니다. 대신 그룹 또는 역할을 정의하여 AWS 리소스에 대한 임시 액세스를 제공합니다.

 [IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)은 계정에 생성할 수 있는, 특정 권한을 지닌 IAM 자격 증명입니다. IAM 역할은 자격 AWS 증명이 할 수 있는 것과 없는 것을 결정하는 권한 정책이 있는 자격 증명이라는 점에서 IAM 사용자와 유사합니다 AWS. 그러나 역할은 한 사람하고만 연관되지 않고 해당 역할이 필요한 사람이라면 누구든지 맡을 수 있어야 합니다. 또한 역할에는 그와 연관된 암호 또는 액세스 키와 같은 표준 장기 자격 증명이 없습니다. 대신에 역할을 맡은 사람에게는 해당 역할 세션을 위한 임시 보안 자격 증명이 제공됩니다.

 페더레이션 아이덴티티에 권한을 부여하려면 역할을 생성하고 해당 역할의 권한을 정의해주면 됩니다. 페더레이션 자격 증명이 인증되면 역할이 연결되고 역할에 정의된 권한이 부여됩니다. 페더레이션 관련 역할에 대한 자세한 내용은 *IAM 사용 설명서*의 [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html)를 참조하세요. IAM Identity Center를 사용하는 경우, 권한 집합을 구성합니다. 인증 후 ID가 액세스할 수 있는 항목을 제어하기 위해 IAM Identity Center는 권한 집합을 IAM의 역할과 연관짓습니다. 권한 세트에 대한 자세한 내용은 *AWS IAM Identity Center 사용 설명서*의 [권한 세트](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html)를 참조하세요.

 계정의 IAM 역할을 사용하여 계정의 리소스에 액세스할 수 있는 다른 AWS 계정 권한을 부여할 수 있습니다. 예제는 [IAM 사용 설명서의 IAM 자습서: IAM 역할을 AWS 계정 사용하여 간 액세스 위임](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html)을 참조하세요. ** 

**Topics**
+ [

## 작동 방식
](#access-policies-how)
+ [

## 전체 콘솔 액세스 정책: AmazonMWAAFullConsoleAccess
](#console-full-access)
+ [

## 전체 API 및 콘솔 액세스 정책: AmazonMWAFullaPiAccess
](#full-access-policy)
+ [

## 읽기 전용 콘솔 액세스 정책: AmazonMWAAReadOnlyAccess
](#mwaa-read-only)
+ [

## Apache Airflow UI 액세스 정책: AmazonMWAAWebServerAccess
](#web-ui-access)
+ [

## Apache Airflow Rest API 액세스 정책: AmazonMWAARestAPIAccess
](#rest-api-access)
+ [

## Apache Airflow CLI 정책: AmazonMWAAAirflowCliAccess
](#cli-access)
+ [

## JSON 정책 생성
](#access-policy-iam-console-create)
+ [

## 개발자 그룹에 정책을 연결하는 사용 사례 예시
](#access-policy-use-case)
+ [

## 다음 단계
](#access-policy-next-up)

## 작동 방식


Amazon MWAA 환경에서 사용되는 리소스 및 서비스는 모든 AWS Identity and Access Management (IAM) 엔터티에서 액세스할 수 없습니다. Apache Airflow 사용자에게 이러한 리소스에 액세스할 수 있는 권한을 부여하는 정책을 생성해야 합니다. 예를 들면, Apache Airflow 개발 팀에 액세스 권한을 부여해 주어야 합니다.

Amazon MWAA는 이러한 정책을 사용하여 사용자에게 AWS 콘솔에서 또는 환경에서 사용하는 APIs를 통해 작업을 수행하는 데 필요한 권한이 있는지 확인합니다.

이 주제의 JSON 정책을 사용하여 IAM에서 Apache Airflow 사용자를 위한 정책을 생성한 다음, 해당 정책을 IAM의 사용자, 그룹 또는 역할에 연결할 수 있습니다.
+ [AmazonMWAAFullConsoleAccess](#console-full-access) - 이 정책을 사용하면 Amazon MWAA 콘솔에서 환경을 구성할 수 있는 권한을 부여할 수 있습니다.
+ [Amazon MWAAFullaPiAccess](#full-access-policy) - 이 정책을 사용하면 환경을 관리하는 데 사용되는 모든 Amazon MWAA API에 대한 액세스 권한을 부여할 수 있습니다.
+ [AmazonMWAAReadOnlyAccess](#mwaa-read-only) - 이 정책을 사용하면 Amazon MWAA 콘솔에서 환경이 사용하는 리소스에 대한 액세스 권한을 부여할 수 있습니다.
+ [Amazon MWAA 웹 서버 액세스](#web-ui-access) - 이 정책을 사용하면 Apache Airflow 웹 서버에 대한 액세스 권한을 부여할 수 있습니다.
+ [AmazonMWAAAirflowCLIAccess](#cli-access) - 이 정책을 사용하면 Apache Airflow CLI 명령을 실행할 수 있는 액세스 권한을 부여할 수 있습니다.

액세스 권한을 제공하려면 사용자, 그룹 또는 역할에 권한을 추가하세요.
+ 의 사용자 및 그룹 AWS IAM Identity Center:

  권한 세트를 생성합니다. *AWS IAM Identity Center 사용자 안내서*에서 [권한 세트 생성](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)의 지침을 따릅니다.
+ ID 제공업체를 통해 IAM에서 관리되는 사용자:

  ID 페더레이션을 위한 역할을 생성합니다. *IAM 사용자 설명서*의 [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)의 지침을 따릅니다.
+ IAM 사용자:
  + 사용자가 맡을 수 있는 역할을 생성합니다. *IAM 사용자 설명서*에서 [Create a role for an IAM user](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)의 지침을 따릅니다.
  + (권장되지 않음) 정책을 사용자에게 직접 연결하거나 사용자를 사용자 그룹에 추가합니다. *IAM 사용 설명서*에서 [사용자(콘솔)에 대한 권한 추가](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)에 있는 지침을 따릅니다.

## 전체 콘솔 액세스 정책: AmazonMWAAFullConsoleAccess
전체 콘솔 액세스

Amazon MWAA 콘솔에서 환경을 구성해야 하는 사용자는 `AmazonMWAAFullConsoleAccess` 권한 정책에 액세스해야 할 수 있습니다.

**참고**  
전체 콘솔 액세스 정책에는 `iam:PassRole`을 수행할 수 있는 권한이 포함되어야 합니다. 이를 통해 사용자는 [서비스 연결 역할](mwaa-slr.md) 및 [실행 역할](mwaa-create-role.md)을 Amazon MWAA에 전달할 수 있습니다. Amazon MWAA는 사용자를 대신하여 다른 AWS 서비스를 호출하기 위해 각 역할을 수임합니다. 다음 예제는 `iam:PassedToService` 조건 키를 사용하여 Amazon MWAA 서비스 주체(`airflow.amazonaws.com`)를 역할 전달이 가능한 서비스로 지정합니다.  
에 대한 자세한 내용은 *IAM 사용 설명서*의 [AWS 서비스에 역할을 전달할 수 있는 사용자 권한 부여](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)를 `iam:PassRole`참조하세요.

[저장 중 암호화](encryption.md#encryption-at-rest)를 위해 [AWS 소유 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)를 사용하여 Amazon MWAA 환경을 만들고 관리하려면 다음 정책을 사용합니다.

### 사용 AWS 소유 키


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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "airflow:*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "iam:PassedToService": "airflow.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:ListRoles"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:CreatePolicy"
            ],
            "Resource": "arn:aws:iam::111122223333:policy/service-role/MWAA-Execution-Policy*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:CreateRole"
            ],
            "Resource": "arn:aws:iam::111122223333:role/service-role/AmazonMWAA*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:CreateServiceLinkedRole"
            ],
            "Resource": "arn:aws:iam::*:role/aws-service-role/airflow.amazonaws.com/AWSServiceRoleForAmazonMWAA"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "s3:ListBucketVersions"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:PutObject",
                "s3:GetEncryptionConfiguration"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "ec2:DescribeRouteTables"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateSecurityGroup"
            ],
            "Resource": "arn:aws:ec2:*:*:security-group/airflow-security-group-*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:ListAliases"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateVpcEndpoint",
            "Resource": [
                "arn:aws:ec2:*:*:vpc-endpoint/*",
                "arn:aws:ec2:*:*:vpc/*",
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:security-group/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:network-interface/*"
            ]
        }
    ]
}
```

------

저장 중 암호화를 위한 [고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)를 사용하여 Amazon MWAA 환경을 생성하고 관리하려면 다음 정책을 사용합니다. 고객 관리형 키를 사용하려면 IAM 보안 주체에게 계정에 저장된 키를 사용하여 AWS KMS 리소스에 액세스할 수 있는 권한이 있어야 합니다.

### 고객 관리형 키 사용


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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "airflow:*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "iam:PassedToService": "airflow.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:ListRoles"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:CreatePolicy"
            ],
            "Resource": "arn:aws:iam::111122223333:policy/service-role/MWAA-Execution-Policy*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:CreateRole"
            ],
            "Resource": "arn:aws:iam::111122223333:role/service-role/AmazonMWAA*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:CreateServiceLinkedRole"
            ],
            "Resource": "arn:aws:iam::*:role/aws-service-role/airflow.amazonaws.com/AWSServiceRoleForAmazonMWAA"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "s3:ListBucketVersions"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:PutObject",
                "s3:GetEncryptionConfiguration"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "ec2:DescribeRouteTables"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateSecurityGroup"
            ],
            "Resource": "arn:aws:ec2:*:*:security-group/airflow-security-group-*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:ListAliases"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:DescribeKey",
                "kms:ListGrants",
                "kms:CreateGrant",
                "kms:RevokeGrant",
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:GenerateDataKey*",
                "kms:ReEncrypt*"
            ],
            "Resource": "arn:aws:kms:*:111122223333:key/YOUR_KMS_ID"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateVpcEndpoint",
            "Resource": [
                "arn:aws:ec2:*:*:vpc-endpoint/*",
                "arn:aws:ec2:*:*:vpc/*",
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:security-group/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:network-interface/*"
            ]
        }
    ]
}
```

------

## 전체 API 및 콘솔 액세스 정책: AmazonMWAFullaPiAccess
전체 API 액세스

사용자가 환경을 관리하는 데 사용되는 모든 Amazon MWAA API에 액세스해야 하는 경우 `AmazonMWAAFullApiAccess` 권한 정책에 액세스해야 할 수 있습니다. 이것이 Apache Airflow UI에 대한 액세스 권한을 부여해 주지는 않습니다.

**참고**  
전체 API 액세스 정책에는 `iam:PassRole`을 수행할 권한이 포함되어야 합니다. 이를 통해 사용자는 [서비스 연결 역할](mwaa-slr.md) 및 [실행 역할](mwaa-create-role.md)을 Amazon MWAA에 전달할 수 있습니다. Amazon MWAA는 사용자를 대신하여 다른 AWS 서비스를 호출하기 위해 각 역할을 수임합니다. 다음 예제는 `iam:PassedToService` 조건 키를 사용하여 Amazon MWAA 서비스 주체(`airflow.amazonaws.com`)를 역할 전달이 가능한 서비스로 지정합니다.  
에 대한 자세한 내용은 *IAM 사용 설명서*의 [AWS 서비스에 역할을 전달할 수 있는 사용자 권한 부여](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)를 `iam:PassRole`참조하세요.

유휴 암호화를 AWS 소유 키 위해를 사용하여 Amazon MWAA 환경을 생성하고 관리하려면 다음 정책을 사용합니다.

### 사용 AWS 소유 키


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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"airflow:*",
         "Resource":"*"
      },
      {
         "Effect":"Allow",
         "Action":[
            "iam:PassRole"
         ],
         "Resource":"*",
         "Condition":{
            "StringLike":{
               "iam:PassedToService":"airflow.amazonaws.com"
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "iam:CreateServiceLinkedRole"
         ],
         "Resource":"arn:aws:iam::*:role/aws-service-role/airflow.amazonaws.com/AWSServiceRoleForAmazonMWAA"
      },
      {
         "Effect":"Allow",
         "Action":[
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeSubnets",
            "ec2:DescribeVpcs",
            "ec2:DescribeRouteTables"
         ],
         "Resource":"*"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:GetEncryptionConfiguration"
         ],
         "Resource":"arn:aws:s3:::*"
      },
      {
         "Effect":"Allow",
         "Action":"ec2:CreateVpcEndpoint",
         "Resource":[
            "arn:aws:ec2:*:*:vpc-endpoint/*",
            "arn:aws:ec2:*:*:vpc/*",
            "arn:aws:ec2:*:*:subnet/*",
            "arn:aws:ec2:*:*:security-group/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "ec2:CreateNetworkInterface"
         ],
         "Resource":[
            "arn:aws:ec2:*:*:subnet/*",
            "arn:aws:ec2:*:*:network-interface/*"
         ]
      }
   ]
}
```

------

저장 중 암호화를 위한 고객 관리형 키를 사용하여 Amazon MWAA 환경을 생성하고 관리하려면 다음 정책을 사용합니다. 고객 관리형 키를 사용하려면 IAM 보안 주체에게 계정에 저장된 키를 사용하여 AWS KMS 리소스에 액세스할 수 있는 권한이 있어야 합니다.

### 고객 관리형 키 사용


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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "airflow:*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "iam:PassedToService": "airflow.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:CreateServiceLinkedRole"
            ],
            "Resource": "arn:aws:iam::*:role/aws-service-role/airflow.amazonaws.com/AWSServiceRoleForAmazonMWAA"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "ec2:DescribeRouteTables"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:DescribeKey",
                "kms:ListGrants",
                "kms:CreateGrant",
                "kms:RevokeGrant",
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:GenerateDataKey*",
                "kms:ReEncrypt*"
            ],
            "Resource": "arn:aws:kms:*:111122223333:key/YOUR_KMS_ID"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetEncryptionConfiguration"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateVpcEndpoint",
            "Resource": [
                "arn:aws:ec2:*:*:vpc-endpoint/*",
                "arn:aws:ec2:*:*:vpc/*",
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:security-group/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:network-interface/*"
            ]
        }
    ]
}
```

------

## 읽기 전용 콘솔 액세스 정책: AmazonMWAAReadOnlyAccess
읽기 전용 콘솔 액세스

사용자는 Amazon MWAA 콘솔 환경 세부 정보 페이지에서 환경이 사용하는 리소스에 액세스해야 하는 경우, `AmazonMWAAReadOnlyAccess` 권한 정책에 대한 액세스 권한이 필요할 수 있습니다. 이에 의해 사용자가 새 환경을 만들거나 기존 환경을 편집하거나 Apache Airflow UI에 액세스하도록 허용되는 것은 아닙니다.

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

****  

```
{
        "Version":"2012-10-17",		 	 	 
        "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "airflow:ListEnvironments",
                "airflow:GetEnvironment",
                "airflow:ListTagsForResource"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Apache Airflow UI 액세스 정책: AmazonMWAAWebServerAccess
Apache Airflow UI 액세스

사용자가 Apache Airflow UI에 액세스해야 하는 경우, `AmazonMWAAWebServerAccess` 권한 정책에 대한 액세스 권한이 필요할 수 있습니다. 이는 사용자가 Amazon MWAA 콘솔에서 환경에 액세스하거나 Amazon MWAA API를 사용하여 어떤 작업을 수행할 수 있도록 허용하지 않습니다. `{airflow-role}`에서 `Admin`, `Op`, `User`, `Viewer` 또는 `Public` 역할을 지정하여 웹 토큰 사용자의 액세스 수준을 사용자 지정합니다. 자세한 내용은 *Apache Airflow 참조 가이드*의 [기본 역할](https://airflow.apache.org/docs/apache-airflow/1.10.6/security.html?highlight=ldap#default-roles)을 참조하세요.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "airflow:CreateWebLoginToken",
            "Resource": [
             "arn:aws:airflow:us-east-1:111122223333:role/{your-environment-name}/{airflow-role}"
            ]
        }
    ]
}
```

------

**참고**  
Amazon MWAA는 다섯 가지 [기본 Apache Airflow 역할 기반 액세스 제어(RBAC) 역할](https://airflow.apache.org/docs/apache-airflow/stable/security/access-control.html?highlight=roles)과의 IAM 통합 기능을 제공합니다. 사용자 지정 Apache Airflow 역할을 사용하는 방법에 대한 자세한 내용은 [튜토리얼: DAG의 하위 집합에 대한 Amazon MWAA 사용자 액세스 제한](limit-access-to-dags.md) 섹션을 참조하세요.
이 정책의 `Resource` 필드를 사용하여 Amazon MWAA 환경에 대한 Apache Airflow 역할 기반 액세스 제어 역할을 지정할 수 있습니다. 그러나 이는 정책의 `Resource` 필드에서 Amazon MWAA 환경 Amazon 리소스 이름(ARN)을 지원하지 않습니다.


## Apache Airflow Rest API 액세스 정책: AmazonMWAARestAPIAccess
Apache Airflow Rest API 액세스

Apache Airflow REST API에 액세스하려면 IAM 정책에서 `airflow:InvokeRestApi` 권한을 부여해야 합니다. 다음 정책 샘플에서, `{airflow-role}`에서 `Admin`, `Op`, `User`, `Viewer` 또는 `Public` 역할을 지정하여 사용자 액세스 수준을 지정합니다. 자세한 내용은 *Apache Airflow 참조 가이드*의 [기본 역할](https://airflow.apache.org/docs/apache-airflow/1.10.6/security.html?highlight=ldap#default-roles)을 참조하세요.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowMwaaRestApiAccess",
            "Effect": "Allow",
            "Action": "airflow:InvokeRestApi",
            "Resource": [
            "arn:aws:airflow:us-east-1:111122223333:role/{your-environment-name}/{airflow-role}"
            ]
        }
    ]
}
```

------

**참고**  
프라이빗 웹 서버를 구성하는 동안에는 가상 프라이빗 클라우드(VPC) 외부에서 `InvokeRestApi` 작업을 간접적으로 호출할 수 없습니다. `aws:SourceVpc` 키를 사용하여 이 작업에 대해 더 세분화된 액세스 제어를 적용할 수 있습니다. 자세한 내용은 [aws:SourceVpc](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpc)를 참조하세요.
이 정책의 `Resource` 필드를 사용하여 Amazon MWAA 환경에 대한 Apache Airflow 역할 기반 액세스 제어 역할을 지정할 수 있습니다. 그러나 이는 정책의 `Resource` 필드에서 Amazon MWAA 환경 Amazon 리소스 이름(ARN)을 지원하지 않습니다.

## Apache Airflow CLI 정책: AmazonMWAAAirflowCliAccess
Apache Airflow CLI 액세스

사용자는 Apache Airflow CLI 명령(예: `trigger_dag`)을 실행해야 하는 경우, `AmazonMWAAAirflowCliAccess` 권한 정책에 대한 액세스 권한이 필요할 수 있습니다. 이는 사용자가 Amazon MWAA 콘솔에서 환경에 액세스하거나 Amazon MWAA API를 사용하여 어떤 작업을 수행할 수 있도록 허용하지 않습니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "airflow:CreateCliToken"
            ],
            "Resource": "arn:aws:airflow:us-east-1:111122223333:environment/${EnvironmentName}"
        }
    ]
}
```

------

## JSON 정책 생성


JSON 정책을 생성하여 이 정책을 IAM 콘솔의 사용자, 역할 또는 그룹에 연결할 수 있습니다. 다음 단계에서는 IAM에서 JSON 정책을 생성하는 방법을 설명합니다.

**JSON 정책 생성**

1. IAM 콘솔에서 [정책 페이지](https://console.aws.amazon.com/iam/home#/policies)를 엽니다.

1. **정책 생성**을 선택합니다.

1. **JSON** 탭을 선택합니다.

1. JSON 정책을 추가합니다.

1. **정책 검토**를 선택합니다.

1. **이름** 및 **설명** 텍스트 필드에 값을 입력합니다(선택 사항).

   예를 들면, 정책 `AmazonMWAAReadOnlyAccess`의 이름을 지정할 수 있습니다.

1. **정책 생성**을 선택합니다.

## 개발자 그룹에 정책을 연결하는 사용 사례 예시
사용 사례

Apache Airflow 개발 팀의 모든 개발자에게 권한을 부여하기 위해 IAM에서 이름이 `AirflowDevelopmentGroup`으로 지정된 그룹을 사용하고 있다고 가정해 보겠습니다. 이러한 사용자는`AmazonMWAAFullConsoleAccess`, `AmazonMWAAAirflowCliAccess`, 및 `AmazonMWAAWebServerAccess` 권한 정책에 액세스할 수 있어야 합니다. 이 섹션에서는 IAM에서 그룹을 생성하고, 정책을 생성 및 연결하며, 이 그룹을 IAM 사용자와 연결하는 방법을 설명합니다. 이 단계에서는 [AWS소유 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)를 사용한다고 가정합니다.

**AmazonMWAAFullConsoleAccess 정책 생성**

1. [AmazonMWAAFullConsoleAccess 액세스 정책](./samples/AmazonMWAAFullConsoleAccess.zip)을 다운로드합니다.

1. IAM 콘솔에서 [정책 페이지](https://console.aws.amazon.com/iam/home#/policies)를 엽니다.

1. **정책 생성**을 선택합니다.

1. **JSON** 탭을 선택합니다.

1. `AmazonMWAAFullConsoleAccess`에 대한 JSON 정책을 붙여넣습니다.

1. 다음 값을 대체합니다.

   1. *123456789012* - AWS 계정 ID(예: `0123456789`)

   1. *\$1your-kms-id\$1* - 고객 관리형 키에 대한 고유 식별자로, 저장 중 암호화에 고객 관리형 키를 사용하는 경우에만 적용됩니다.

1. **정책 검토**를 선택합니다.

1. **이름**에 `AmazonMWAAFullConsoleAccess`를 입력합니다.

1. **정책 생성**을 선택합니다.

**AmazonMWAAWebServerAccess 정책을 생성하려면**

1. [AmazonMWAAWebServerAccess 액세스 정책](./samples/AmazonMWAAWebServerAccess.zip)을 다운로드합니다.

1. IAM 콘솔에서 [정책 페이지](https://console.aws.amazon.com/iam/home#/policies)를 엽니다.

1. **정책 생성**을 선택합니다.

1. **JSON** 탭을 선택합니다.

1. `AmazonMWAAWebServerAccess`에 대한 JSON 정책을 붙여넣습니다.

1. 다음 값을 대체합니다.

   1. *us-east-1* - Amazon MWAA 환경의 리전(예: `us-east-1`)

   1. *123456789012* - AWS 계정 ID(예: `0123456789`)

   1. *\$1your-environment-name\$1* - 사용자의 Amazon MWAA 환경 이름(예: `MyAirflowEnvironment`)

   1. *\$1airflow-role\$1* - `Admin` Apache Airflow의 [기본 역할 ](https://airflow.apache.org/docs/apache-airflow/1.10.6/security.html?highlight=ldap#default-roles)

1. **정책 검토**를 선택합니다.

1. **이름**에 `AmazonMWAAWebServerAccess`를 입력합니다.

1. **정책 생성**을 선택합니다.

**AmazonMWAAAirflowCliAccess 정책을 생성하려면**

1. [AmazonMWAAAirflowCliAccess 액세스 정책](./samples/AmazonMWAAAirflowCliAccess.zip)을 다운로드합니다.

1. IAM 콘솔에서 [정책 페이지](https://console.aws.amazon.com/iam/home#/policies)를 엽니다.

1. **정책 생성**을 선택합니다.

1. **JSON** 탭을 선택합니다.

1. `AmazonMWAAAirflowCliAccess`에 대한 JSON 정책을 붙여넣습니다.

1. **정책 검토**를 선택합니다.

1. **이름**에 `AmazonMWAAAirflowCliAccess`를 입력합니다.

1. **정책 생성**을 선택합니다.

**그룹을 생성하려면**

1. IAM 콘솔의 [그룹 페이지](https://console.aws.amazon.com/iam/home#/groups)를 엽니다.

1. `AirflowDevelopmentGroup`의 이름을 입력합니다.

1. **다음 단계**를 선택합니다.

1. **필터**에서 결과를 필터링하려면 `AmazonMWAA`를 입력합니다.

1. 생성한 세 가지 정책을 선택합니다.

1. **다음 단계**를 선택합니다.

1. **그룹 생성**을 선택합니다.

**사용자와 연결하려면**

1. IAM 콘솔에서 [사용자 페이지](https://console.aws.amazon.com/iam/home#/users) 엽니다.

1. 사용자를 선택합니다.

1. **그룹**을 선택합니다.

1. **그룹에 사용자 추가**를 선택합니다.

1. **AirflowDevelopmentGroup**을 선택합니다.

1. **그룹에 추가**를 선택합니다.

## 다음 단계

+ [Apache Airflow에 액세스](access-airflow-ui.md)에서 Apache Airflow UI에 액세스하기 위한 토큰을 생성하는 방법을 알아봅니다.
+ [IAM 정책 생성](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_create.html)에서 IAM 정책 생성에 대한 자세한 내용을 확인합니다.

# Amazon MWAA의 서비스 연결 역할
서비스 연결 역할

Amazon Managed Workflows for Apache Airflow는 AWS Identity and Access Management (IAM)[ 서비스 연결 역할을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) 사용합니다. 서비스 연결 역할은 Amazon MWAA에 직접 연결된 고유한 유형의 IAM 역할입니다. 서비스 연결 역할은 Amazon MWAA에서 사전 정의하며 서비스가 사용자를 대신하여 다른 AWS 서비스를 호출하는 데 필요한 모든 권한을 포함합니다.

서비스 연결 역할을 사용하면 필요한 권한을 수동으로 추가할 필요가 없으므로 Amazon MWAA를 더 간편하게 설정할 수 있습니다. Amazon MWAA에서 서비스 연결 역할의 권한을 정의하므로 달리 정의되지 않은 한, Amazon MWAA만 해당 역할을 맡을 수 있습니다. 정의된 권한에는 신뢰 정책과 권한 정책이 포함되며 이 권한 정책은 다른 IAM 엔터티에 연결할 수 없습니다.

먼저 관련 리소스를 삭제한 후에만 서비스 연결 역할을 삭제할 수 있습니다. 이렇게 하면 리소스에 대한 액세스 권한을 실수로 삭제할 수 없기 때문에 Amazon MWAA 리소스가 보호됩니다.

서비스 연결 역할을 지원하는 기타 서비스에 대한 자세한 내용을 알아보려면 [AWS IAM으로 작업하는 서비스](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)를 참조하고 **서비스 연결 역할** 열에 **예**가 표시된 서비스를 검색하세요. 해당 서비스에 대한 서비스 연결 역할 설명서를 보려면 **예** 링크를 선택합니다.

## Amazon MWAA에 대한 서비스 연결 역할 권한


Amazon MWAA는 라는 서비스 연결 역할을 사용합니다. 계정에서 생성된 `AWSServiceRoleForAmazonMWAA` 서비스 연결 역할은 Amazon MWAA에 다음 AWS 서비스에 대한 액세스 권한을 부여합니다.
+ Amazon CloudWatch Logs(CloudWatch Logs) - Apache Airflow 로그의 로그 그룹을 생성합니다.
+ Amazon CloudWatch(CloudWatch) - 환경 및 기본 구성 요소와 관련된 지표를 계정에 게시합니다.
+ Amazon Elastic Compute Cloud(Amazon EC2) - 다음과 같은 리소스를 생성하려면
  + Apache Airflow 스케줄러 및 작업자가 사용할 AWS관리형 Amazon Aurora PostgreSQL 데이터베이스 클러스터에 대한 VPC의 Amazon VPC 엔드포인트입니다.
  + Apache Airflow 웹 서버에 대해 [프라이빗 네트워크](configuring-networking.md) 옵션을 선택한 경우, 웹 서버에 대한 네트워크 액세스를 지원하는 추가 Amazon VPC 엔드포인트입니다.
  + Amazon VPC에서 호스팅되는 AWS 리소스에 대한 네트워크 액세스를 활성화하기 위한 Amazon VPC의 [탄력적 네트워크 인터페이스(ENIs)](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ElasticNetworkInterfaces.html)입니다.

다음 신뢰 정책을 이용하면 서비스 주체가 서비스 연결 역할을 맡을 수 있습니다. Amazon MWAA의 서비스 주체는 정책에 명시된 `airflow.amazonaws.com` 바와 같습니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "airflow.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

이름이 `AmazonMWAAServiceRolePolicy`인 역할 권한 정책에 따라 Amazon MWAA에서 지정된 리소스에서 다음 작업을 완료할 수 있습니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:CreateLogGroup",
                "logs:DescribeLogGroups"
            ],
            "Resource": "arn:aws:logs:*:*:log-group:airflow-*:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AttachNetworkInterface",
                "ec2:CreateNetworkInterface",
                "ec2:CreateNetworkInterfacePermission",
                "ec2:DeleteNetworkInterface",
                "ec2:DeleteNetworkInterfacePermission",
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcEndpoints",
                "ec2:DescribeVpcs",
                "ec2:DetachNetworkInterface"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateVpcEndpoint",
            "Resource": "arn:aws:ec2:*:*:vpc-endpoint/*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "aws:TagKeys": "AmazonMWAAManaged"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:ModifyVpcEndpoint",
                "ec2:DeleteVpcEndpoints"
            ],
            "Resource": "arn:aws:ec2:*:*:vpc-endpoint/*",
            "Condition": {
                "Null": {
                    "aws:ResourceTag/AmazonMWAAManaged": false
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateVpcEndpoint",
                "ec2:ModifyVpcEndpoint"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:vpc/*",
                "arn:aws:ec2:*:*:security-group/*",
                "arn:aws:ec2:*:*:subnet/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "arn:aws:ec2:*:*:vpc-endpoint/*",
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": "CreateVpcEndpoint"
                },
                "ForAnyValue:StringEquals": {
                    "aws:TagKeys": "AmazonMWAAManaged"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "cloudwatch:PutMetricData",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "cloudwatch:namespace": [
                        "AWS/MWAA"
                    ]
                }
            }
        }
    ]
}
```

------

IAM 엔터티(사용자, 그룹, 역할 등)가 서비스 연결 역할을 생성하고 편집하거나 삭제할 수 있도록 권한을 구성할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [서비스 연결 역할 권한](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)을 참조하세요.

## Amazon MWAA에 대한 서비스 연결 역할 생성


서비스 연결 역할은 수동으로 생성할 필요가 없습니다. AWS Management Console AWS CLI, 또는 AWS API를 사용하여 새 Amazon MWAA 환경을 생성하면 Amazon MWAA가 서비스 연결 역할을 생성합니다.

이 서비스 연결 역할을 삭제했다가 다시 생성해야 하는 경우 동일한 프로세스를 사용하여 계정에서 역할을 다시 생성할 수 있습니다. 다른 환경을 생성할 때는 Amazon MWAA에서 서비스 연결 역할을 자동으로 다시 생성합니다.

## Amazon ECS에 대한 서비스 연결 역할 편집


Amazon MWAA는 AWSServiceRoleForAmazonMWAA 서비스 연결 역할을 편집하도록 허용하지 않습니다. 서비스 연결 역할을 생성한 후에는 다양한 개체가 역할을 참조할 수 있기 때문에 역할 이름을 변경할 수 없습니다. 하지만 IAM을 사용하여 역할의 설명을 편집할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [서비스 연결 역할 편집](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)을 참조하세요.

## Amazon ECS에 대한 서비스 연결 역할 삭제


서비스 연결 역할이 필요한 기능 또는 서비스가 더 이상 필요 없는 경우에는 해당 역할을 삭제하는 것이 좋습니다. 따라서 적극적으로 모니터링하거나 유지하지 않는 미사용 엔터티가 없도록 합니다.

Amazon MWAA 환경을 삭제하면 Amazon MWAA에서 서비스의 일부로 사용하는 모든 관련 리소스를 삭제합니다. 그러나, 서비스 연결 역할을 삭제하기 위해서는 Amazon MWAA에서 환경 삭제를 완료할 때까지 기다려야 합니다. Amazon MWAA에서 환경을 삭제하기 전에 서비스 연결 역할을 삭제하면 Amazon MWAA에서 해당 환경의 모든 관련 리소스를 삭제하지 못할 수 있습니다.

**IAM을 사용하여 수동으로 서비스 연결 역할을 삭제하려면 다음을 수행하세요.**

IAM 콘솔 AWS CLI, 또는 AWS API를 사용하여 AWSServiceRoleForAmazonMWAA 서비스 연결 역할을 삭제합니다. 자세한 내용은 *IAM 사용 설명서*의 [서비스 연결 역할 삭제](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)를 참조하세요.

## Amazon MWAA 서비스 연결 역할을 위해 지원 받는 리전


Amazon MWAA는 서비스가 제공되는 모든 리전에서 서비스 연결 역할 사용을 지원합니다. 자세한 내용은 [Amazon Managed Workflows for Apache Airflow의 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/mwaa.html)을 참조하세요.

## 정책 업데이트



| 변경 | 설명 | Date | 
| --- | --- | --- | 
|  Amazon MWAA의 서비스 연결 역할 권한 정책 업데이트  |  [`AmazonMWAAServiceRolePolicy`](#mwaa-slr-iam-policy)— Amazon MWAA에서는 서비스 연결 역할에 대한 권한 정책을 업데이트하여 서비스의 기본 리소스에 관련된 추가 지표를 고객 계정에 게시할 수 있는 권한을 Amazon MWAA에 부여합니다. 이러한 새 지표는 `AWS/MWAA`에 게시됩니다.  |  2022년 11월 18일  | 
|  Amazon MWAA의 변경 사항 추적 시작  |  Amazon MWAA는 AWS관리형 서비스 연결 역할 권한 정책에 대한 변경 사항 추적을 시작했습니다.  |  2022년 11월 18일  | 

# Amazon MWAA 실행 역할
실행 역할

실행 역할은 사용자를 대신하여 다른 AWS 서비스의 리소스를 호출할 수 있는 권한을 Amazon Managed Workflows for Apache Airflow에 부여하는 권한 정책이 있는 AWS Identity and Access Management (IAM) 역할입니다. 여기에는 Amazon S3 버킷, [AWS소유 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) 및 CloudWatch Log와 같은 리소스가 포함될 수 있습니다. Amazon MWAA 환경에는 환경당 하나의 실행 역할이 필요합니다. 이 주제에서는 Amazon MWAA가 환경에서 사용하는 다른 AWS 리소스에 액세스할 수 있도록 환경의 실행 역할을 사용하고 구성하는 방법을 설명합니다.

**Contents**
+ [

## 실행 역할 개요
](#mwaa-create-role-how)
  + [

### 권한은 기본적으로 연결됩니다.
](#mwaa-create-role-how-create-role)
  + [

### 다른 AWS 서비스를 사용할 수 있는 권한을 추가하는 방법
](#mwaa-create-role-how-adding)
  + [

### 새 실행 역할을 연결하는 방법
](#mwaa-create-role-how-associating)
+ [

## 새 역할 생성
](#mwaa-create-role-mwaa-onconsole)
+ [

## 실행 역할 정책 액세스 및 업데이트
](#mwaa-create-role-update)
  + [

### 다른 AWS 서비스를 사용하도록 JSON 정책 연결
](#mwaa-create-role-attach-json-policy)
+ [

## Amazon S3 버킷에 대한 액세스 권한을 계정 수준의 퍼블릭 액세스 차단으로 부여합니다.
](#mwaa-create-role-s3-publicaccessblock)
+ [

## Apache Airflow 연결 사용
](#mwaa-create-role-airflow-connections)
+ [

## 실행 역할에 대한 샘플 JSON 정책
](#mwaa-create-role-json)
  + [

### 고객 관리형 키에 대한 샘플 정책
](#mwaa-create-role-cmk)
  + [

### AWS소유 키에 대한 샘플 정책
](#mwaa-create-role-aocmk)
+ [

## 다음 단계
](#mwaa-create-role-next-up)

## 실행 역할 개요


Amazon MWAA가 환경에서 사용하는 다른 AWS 서비스를 사용할 수 있는 권한은 실행 역할에서 가져옵니다. Amazon MWAA 실행 역할에는 환경에서 사용하는 다음 AWS 서비스에 대한 권한이 필요합니다.
+ Amazon CloudWatch(CloudWatch) - Apache Airflow 지표 및 로그를 전송합니다.
+ Amazon Simple Storage Service(S3) - 환경의 DAG 코드 및 지원 파일(예: `requirements.txt`)을 파싱합니다. 
+ Amazon Simple Queue Service(Amazon SQS) - 환경의 Apache Airflow 작업을 Amazon MWAA에서 소유하고 있는 Amazon SQS 대기열에 저장합니다.
+ AWS Key Management Service (AWS KMS) - 환경의 데이터 암호화([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가 AWS 소유 KMS 키를 사용하여 데이터를 암호화하도록 선택한 경우 Amazon MWAA 실행 역할에 연결된 정책에서 Amazon SQS를 통해 계정 외부에 저장된 임의의 KMS 키에 대한 액세스 권한을 부여하는 권한을 정의해야 합니다. 환경의 실행 역할이 임의의 KMS 키에 액세스하게 하려면 다음 두 가지 조건이 필요합니다.  
타사 계정의 KMS 키는 자체의 리소스 정책을 통해 이러한 크로스 계정 액세스를 허용해야 합니다.
DAG 코드는 타사 계정에서 `airflow-celery-`로 시작해야 하며 암호화에 동일한 KMS 키를 사용하는 Amazon SQS 대기열에 액세스해야 합니다.
리소스에 대한 크로스 계정 액세스와 관련된 위험을 줄이려면, DAG에 배치된 코드를 검토하여 사용자의 워크플로가 사용자 계정 외부 임의의 Amazon SQS 대기열에 액세스하지 않도록 하는 것이 좋습니다. 또한, 사용자 계정에 저장된 고객 관리형 KMS 키를 사용하여 Amazon MWAA에서 암호화를 관리할 수 있습니다. 이로 인해 사용자 환경의 실행 역할이 사용자 계정의 KMS 키에만 액세스하는 것으로 제한됩니다.  
암호화 옵션을 선택한 후에는 기존 환경에 대한 선택사항을 변경할 수 없다는 점에 유의하세요.

실행 역할에는 다음과 같은 IAM 작업에 대한 권한도 필요합니다.
+ `airflow:PublishMetrics`— Amazon MWAA에서 환경의 상태를 모니터링할 수 있도록 합니다.

### 권한은 기본적으로 연결됩니다.


Amazon MWAA 콘솔의 기본 옵션을 사용하여 실행 역할과 [AWS소유 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)를 생성한 다음 이 페이지의 단계를 이용하여 사용자의 실행 역할에 권한 정책을 추가할 수 있습니다.
+ 콘솔에서 **새 역할 생성** 옵션을 선택하면 Amazon MWAA에서 환경에 필요한 최소 권한을 사용자의 실행 역할에 부여합니다.
+ 경우에 따라, Amazon MWAA에서 최대 권한을 부여하기도 합니다. 예를 들면, 환경을 만들 때는 Amazon MWAA 콘솔에서 실행 역할을 생성하는 옵션을 선택하는 것이 좋습니다. Amazon MWAA는 실행 역할의 정규식(regex) 패턴을 `"arn:aws:logs:us-east-1:111122223333:log-group:airflow-your-environment-name-*"`로 사용하여 모든 CloudWatch Log 그룹에 대해 권한 정책을 자동으로 추가합니다. 

### 다른 AWS 서비스를 사용할 수 있는 권한을 추가하는 방법


Amazon MWAA는 환경이 만들어진 후에는 기존 실행 역할에 권한 정책을 추가하거나 편집할 수 없습니다. 사용자는 환경에 필요한 추가 권한 정책으로 실행 역할을 업데이트해야 합니다. 예를 들어 DAG에 액세스해야 하는 경우 AWS Glue Amazon MWAA는 환경에 필요한 이러한 권한을 자동으로 감지하거나 실행 역할에 권한을 추가할 수 없습니다.

다음 두 가지 방법으로 실행 역할에 권한을 추가할 수 있습니다.
+ 실행 역할에 필요한 JSON 정책을 인라인으로 수정하는 방법 이 페이지의 샘플 [JSON 정책 문서](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html)를 사용하여 IAM 콘솔에서 실행 역할의 JSON 정책을 추가하거나 바꿀 수 있습니다.
+  AWS 서비스에 대한 JSON 정책을 생성하여 실행 역할에 연결합니다. 이 페이지의 단계를 사용하여 AWS 서비스의 새 JSON 정책 문서를 IAM 콘솔의 실행 역할에 연결할 수 있습니다.

실행 역할이 이미 환경에 연결되어 있다고 가정하면, Amazon MWAA는 추가된 권한 정책을 즉시 사용할 수 있습니다. 즉, 실행 역할에서 필요한 권한을 제거하면 DAG가 실패할 수 있음을 의미하는 것이기도 합니다.

### 새 실행 역할을 연결하는 방법


언제든지 사용자 환경의 실행 역할을 변경할 수 있습니다. 새 실행 역할이 아직 사용자의 환경에 연결되지 않은 경우, 이 페이지의 단계를 사용하여 새 실행 역할 정책을 만들고 해당 역할을 환경에 연결합니다.

## 새 역할 생성


기본 설정으로, Amazon MWAA는 사용자를 대신하여 데이터 암호화를 위한 [AWS소유 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) 및 실행 역할을 생성합니다. 환경을 생성할 때는 Amazon MWAA 콘솔에서 기본 옵션을 선택할 수 있습니다. 다음 이미지는 환경에 대한 실행 역할을 생성하기 위한 기본 옵션을 보여줍니다.

![\[새 역할을 생성할 수 있는 기본 옵션이 있는 이미지입니다.\]](http://docs.aws.amazon.com/ko_kr/mwaa/latest/userguide/images/mwaa-console-permissions.png)


**중요**  
새 실행 역할을 생성할 때 삭제된 실행 역할의 이름을 재사용하지 마세요. 고유한 이름은 충돌을 방지하고 적절한 리소스 관리를 보장하는 데 도움이 될 수 있습니다.

## 실행 역할 정책 액세스 및 업데이트


Amazon MWAA 콘솔에서 사용자 환경의 실행 역할에 액세스하고, IAM 콘솔에서 그 역할에 대한 JSON 정책을 업데이트할 수 있습니다.

**실행 역할 정책 업데이트**

1. Amazon MWAA 콘솔에서 [환경 페이지](https://console.aws.amazon.com/mwaa/home#/environments)를 엽니다.

1. 환경을 선택합니다.

1. IAM에서 권한 페이지를 열려면 **권한** 창에서 실행 역할을 선택합니다.

1. 실행 역할 이름을 선택하여 권한 정책을 엽니다.

1. **정책 편집**을 선택합니다.

1. **JSON** 탭을 선택합니다.

1. JSON 정책을 업데이트합니다.

1. **정책 검토**를 선택합니다.

1. **변경 사항 저장**을 선택합니다.

### 다른 AWS 서비스를 사용하도록 JSON 정책 연결


 AWS 서비스에 대한 JSON 정책을 생성하여 실행 역할에 연결할 수 있습니다. 예를 들면, 다음 JSON 정책을 연결하여 AWS Secrets Manager에 있는 모든 리소스에 읽기 전용 액세스 권한을 부여할 수 있습니다. 

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "secretsmanager:GetResourcePolicy",
            "secretsmanager:GetSecretValue",
            "secretsmanager:DescribeSecret",
            "secretsmanager:ListSecretVersionIds"
         ],
         "Resource":[
            "*"
         ]
      }
   ]
}
```

------

**실행 역할에 대한 정책 연결**

1. Amazon MWAA 콘솔에서 [환경 페이지](https://console.aws.amazon.com/mwaa/home#/environments)를 엽니다.

1. 환경을 선택합니다.

1. **권한** 창에서 실행 역할을 선택합니다.

1. **정책 연결**을 선택합니다.

1. **정책 생성**을 선택합니다.

1. **JSON**을 선택합니다.

1. JSON 정책을 붙여넣습니다.

1. **다음: 태그**를 선택한 후 **다음: 검토**를 선택합니다.

1. 정책의 이름(예: `SecretsManagerReadPolicy`)과 설명을 입력합니다.

1. **정책 생성**을 선택합니다.

## Amazon S3 버킷에 대한 액세스 권한을 계정 수준의 퍼블릭 액세스 차단으로 부여합니다.


[https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutPublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutPublicAccessBlock.html)Amazon S3 작업을 사용하여 계정의 모든 버킷에 대한 액세스를 차단하는 것이 좋을 수 있습니다. 계정의 모든 버킷에 대한 액세스를 차단할 때는 사용자의 환경 실행 역할은 권한 정책에 `s3:GetAccountPublicAccessBlock` 작업이 포함되게 해야 합니다.

다음 예는 계정의 모든 Amazon S3 버킷에 대한 액세스를 차단할 때 사용자의 실행 역할에 연결해야 하는 정책을 보여줍니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
     {
       "Effect": "Allow",
       "Action": "s3:GetAccountPublicAccessBlock",
       "Resource": "*"
     }
  ]
}
```

------

Amazon S3 버킷에 대한 액세스를 제한하는 방법에 대한 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*의 [Amazon S3 Storage에 대한 퍼블릭 액세스 차단](https://docs.aws.amazon.com/)을 참조하세요.

## Apache Airflow 연결 사용


또한 Apache Airflow 연결을 만들고 Apache Airflow 연결 객체에 실행 역할과 해당 ARN을 지정할 수 있습니다. 자세한 내용은 [Apache Airflow에 대한 연결 관리](manage-connections.md) 섹션을 참조하세요.

## 실행 역할에 대한 샘플 JSON 정책
샘플 정책

이 섹션의 샘플 권한 정책을 사용하여 기존 실행 역할에 사용된 권한 정책을 대체하거나 새 실행 역할을 생성하여 사용자 환경에 사용할 수 있습니다. 이러한 정책에는 Apache Airflow 로그 그룹, [Amazon S3 버킷](mwaa-s3-bucket.md) 및 [Amazon MWAA 환경](create-environment.md)에 대한 [리소스 ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html) 자리 표시자가 포함되어 있습니다.

예제 정책을 복사하여 샘플 ARN 또는 자리 표시자를 교체한 다음, JSON 정책을 사용하여 실행 역할을 생성하거나 업데이트하는 것이 좋습니다.

### 고객 관리형 키에 대한 샘플 정책


다음 예는 [고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)에 사용할 수 있는 실행 역할 정책을 보여줍니다.

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

****  

```
{
 "Version":"2012-10-17",		 	 	 
 "Statement": [
  { 
   "Effect": "Deny",
   "Action": "s3:ListAllMyBuckets",
   "Resource": [
     "arn:aws:s3:::amzn-s3-demo-bucket",
	   "arn:aws:s3:::amzn-s3-demo-bucket/*"
   ]
  }, 
  { 
   "Effect": "Allow",
   "Action": [ 
    "s3:GetObject*",
    "s3:GetBucket*",
    "s3:List*"
   ],
   "Resource": [
     "arn:aws:s3:::amzn-s3-demo-bucket",
	   "arn:aws:s3:::amzn-s3-demo-bucket/*"
   ]
  },
  {
   "Effect": "Allow",
   "Action": [
    "logs:CreateLogStream",
    "logs:CreateLogGroup",
    "logs:PutLogEvents",
    "logs:GetLogEvents",
    "logs:GetLogRecord",
    "logs:GetLogGroupFields",
    "logs:GetQueryResults"
   ],
   "Resource": [
    "arn:aws:logs:us-east-1:111122223333:log-group:airflow-your-environment-name:*"
   ]
  },
  {
   "Effect": "Allow",
   "Action": [
    "logs:DescribeLogGroups"
   ],
   "Resource": [
    "*"
   ]
  },
  {
   "Effect": "Allow",
   "Action": [
    "s3:GetAccountPublicAccessBlock"
   ],
   "Resource": [
    "*"
   ]
  },
  {
   "Effect": "Allow",
   "Action": "cloudwatch:PutMetricData",
   "Resource": "*"
  },
  {
   "Effect": "Allow",
   "Action": [
    "sqs:ChangeMessageVisibility",
    "sqs:DeleteMessage",
    "sqs:GetQueueAttributes",
    "sqs:GetQueueUrl",
    "sqs:ReceiveMessage",
    "sqs:SendMessage"
   ],
   "Resource": "arn:aws:sqs:us-east-1:*:airflow-celery-*"
  },
  {
   "Effect": "Allow",
   "Action": [
    "kms:Decrypt",
    "kms:DescribeKey",
    "kms:GenerateDataKey*",
    "kms:Encrypt"
   ],
   "Resource": "arn:aws:kms:us-east-1:111122223333:key/your-kms-cmk-id",
   "Condition": {
    "StringLike": {
     "kms:ViaService": [
      "sqs.us-east-1.amazonaws.com",
      "s3.us-east-1.amazonaws.com"
     ]
    }
   }
  }
 ]
}
```

------

다음으로, Amazon MWAA에서 이 역할을 맡도록 허용하여 사용자를 대신해서 작업을 수행할 수 있게 해야 합니다. 이를 위해서는 [IAM 콘솔](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console)을 사용하여 이 실행 역할의 신뢰할 수 있는 객체 목록에 `"airflow.amazonaws.com"` 및 `"airflow-env.amazonaws.com"` 서비스 주체를 추가하거나, AWS CLI를 사용하여 IAM [Create-Role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html) 명령을 통해 이 실행 역할에 대한 역할 수임 정책 문서에 이러한 서비스 주체를 배치하면 됩니다. 다음 샘플 역할 수임 정책 문서를 참조하세요.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": {
            "Service": ["airflow.amazonaws.com","airflow-env.amazonaws.com"]
        },
        "Action": "sts:AssumeRole"
      }
   ]
}
```

------

이어서, 다음 JSON 정책을 [고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)에 연결합니다. 이 정책은 [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context) 조건 키 접두사를 사용하여 CloudWatch Log의 Apache Airflow 로그 그룹에 대한 액세스를 허용합니다.

```
{
  "Sid": "Allow logs access",
  "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:111122223333:*"
    }
  }
}
```

### AWS소유 키에 대한 샘플 정책


다음 예시는 [AWS소유 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)에 사용할 수 있는 실행 역할 정책을 보여줍니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "airflow:PublishMetrics",
            "Resource": "arn:aws:airflow:us-east-1:111122223333:environment/{your-environment-name}"
        },
        { 
            "Effect": "Deny",
            "Action": "s3:ListAllMyBuckets",
            "Resource": [
								"arn:aws:s3:::amzn-s3-demo-bucket",
								"arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        },
        { 
            "Effect": "Allow",
            "Action": [ 
                "s3:GetObject*",
                "s3:GetBucket*",
                "s3:List*"
            ],
            "Resource": [
								"arn:aws:s3:::amzn-s3-demo-bucket",
								"arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:CreateLogGroup",
                "logs:PutLogEvents",
                "logs:GetLogEvents",
                "logs:GetLogRecord",
                "logs:GetLogGroupFields",
                "logs:GetQueryResults"
            ],
            "Resource": [
            "arn:aws:logs:us-east-1:111122223333:log-group:airflow-{your-environment-name}-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogGroups"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetAccountPublicAccessBlock"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "cloudwatch:PutMetricData",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sqs:ChangeMessageVisibility",
                "sqs:DeleteMessage",
                "sqs:GetQueueAttributes",
                "sqs:GetQueueUrl",
                "sqs:ReceiveMessage",
                "sqs:SendMessage"
            ],
            "Resource": "arn:aws:sqs:us-east-1:*:airflow-celery-*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:DescribeKey",
                "kms:GenerateDataKey*",
                "kms:Encrypt"
            ],
            "NotResource": "arn:aws:kms:*:111122223333:key/*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                    "sqs.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

## 다음 단계

+ [Amazon MWAA 환경 액세스](access-policies.md)에서 사용자 및 Apache Airflow 사용자가 환경에 액세스하는 데 필요한 필수 권한에 대해 알아봅니다.
+ [암호화를 위한 고객 관리형 키 사용](custom-keys-certs.md)에 대해 알아봅니다.
+ 더 많은 [고객 관리형 정책 예제](https://docs.aws.amazon.com/kms/latest/developerguide/customer-managed-policies.html)를 살펴봅니다.

# 교차 서비스 혼동된 대리인 방지


혼동된 대리자 문제는 작업을 수행할 권한이 없는 엔터티가 권한이 더 많은 엔터티에게 작업을 수행하도록 강요할 수 있는 보안 문제입니다. 에서 AWS교차 서비스 가장은 혼동된 대리자 문제를 초래할 수 있습니다. 교차 서비스 가장은 한 서비스(*직접 호출하는 서비스*)가 다른 서비스(*직접 호출되는 서비스*)를 직접 호출할 때 발생할 수 있습니다. 직접적으로 호출하는 서비스는 다른 고객의 리소스에 대해 액세스 권한이 없는 방식으로 작동하게 권한을 사용하도록 조작될 수 있습니다. 이를 방지하기 위해는 계정의 리소스에 대한 액세스 권한이 부여된 서비스 보안 주체를 사용하여 모든 서비스에 대한 데이터를 보호하는 데 도움이 되는 도구를 AWS 제공합니다.

Amazon MWAA가 리소스에 다른 서비스를 제공하는 권한을 제한하려면 환경의 실행 역할에서 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 및 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 글로벌 조건 컨텍스트 키를 사용하는 것이 좋습니다. 하나의 리소스만 교차 서비스 액세스와 연결되도록 허용하려는 경우 `aws:SourceArn`을 사용하세요. 해당 계정의 모든 리소스가 교차 서비스 사용과 연결되도록 허용하려는 경우 `aws:SourceAccount`을(를) 사용합니다.

혼동된 대리자 문제로부터 보호하는 가장 효과적인 방법은 리소스의 전체 ARN이 포함된 `aws:SourceArn` 전역 조건 컨텍스트 키를 사용하는 것입니다. 리소스의 전체 ARN을 모르거나 여러 리소스를 지정하는 경우, ARN의 알 수 없는 부분에 대해 와일드카드 문자(`*`)를 포함한 `aws:SourceArn` 글로벌 조건 컨텍스트 키를 사용합니다. 예를 들어 `arn:aws:airflow:*:123456789012:environment/*`입니다.

`aws:SourceArn`의 값은 실행 역할을 생성하려는 Amazon MWAA 환경 ARN이어야 합니다.

다음 예제를 사용하여 사용자 환경의 실행 역할 신뢰 정책에서 `aws:SourceArn` 및 `aws:SourceAccount` 전역 조건 컨텍스트 키를 적용하여 혼동된 대리자 문제를 방지하세요. 새 실행 역할을 생성할 때는 다음 신뢰 정책을 사용할 수 있습니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "airflow.amazonaws.com",
                    "airflow-env.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:airflow:us-east-1:123456789012:environment/your-environment-name"
                },
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                }
            }
        }
    ]
}
```

------

# Apache Airflow 액세스 모드
Apache Airflow 액세스 모드

Amazon Managed Workflows for Apache Airflow 콘솔에는 사용자 환경의 Apache Airflow 웹 서버에 대한 프라이빗 또는 퍼블릭 라우팅을 구성할 수 있는 내장 옵션이 포함되어 있습니다. 이 가이드에서는 Amazon Managed Workflows for Apache Airflow 환경에서 Apache Airflow 웹 서버에 사용할 수 있는 액세스 모드와, 프라이빗 네트워크 옵션을 선택할 경우 Amazon VPC에서 구성해야 하는 추가 리소스에 대해 설명합니다.

**Contents**
+ [

## Apache Airflow 액세스 모드
](#configuring-networking-onconsole)
  + [

### 퍼블릭 네트워크
](#webserver-options-public-network-onconsole)
  + [

### 프라이빗 네트워크
](#webserver-options-private-network)
+ [

## 액세스 모드 개요
](#configuring-networking-access-overview)
  + [

### 퍼블릭 네트워크 액세스 모드
](#access-overview-public)
  + [

### 프라이빗 네트워크 액세스 모드
](#access-overview-private)
+ [

## 프라이빗 및 퍼블릭 액세스 모드 설정
](#access-network-choose)
  + [

### 퍼블릭 네트워크 설정
](#access-network-public)
  + [

### 프라이빗 네트워크 설정
](#access-network-private)
+ [

## Apache Airflow 웹 서버의 VPC 엔드포인트 액세스(프라이빗 네트워크 액세스)
](#configuring-access-vpce)

## Apache Airflow 액세스 모드


Apache Airflow 웹 서버의 프라이빗 또는 퍼블릭 라우팅을 선택할 수 있습니다. 프라이빗 라우팅을 활성화하려면 **프라이빗 네트워크**를 선택합니다. 이렇게 하면 Amazon VPC 내에서 Apache Airflow 웹 서버에 대한 사용자 액세스가 제한됩니다. 퍼블릭 라우팅을 활성화하려면 **퍼블릭 네트워크**를 선택합니다. 이를 통해 사용자는 인터넷을 통해 Apache Airflow 웹서버에 액세스할 수 있습니다.

### 퍼블릭 네트워크


다음 아키텍처 다이어그램은 퍼블릭 웹 서버가 있는 Amazon MWAA 환경을 보여줍니다.

![\[이 이미지는 프라이빗 웹 서버가 있는 Amazon MWAA 환경의 아키텍처를 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/mwaa/latest/userguide/images/mwaa-public-web-server.png)


퍼블릭 네트워크 액세스 모드를 사용하면 [사용자 환경의 IAM 정책](access-policies.md)에 대한 액세스 권한이 부여된 사용자가 인터넷을 통해 Apache Airflow UI에 액세스할 수 있습니다.

다음 이미지는 Amazon MWAA 콘솔에서 **퍼블릭 네트워크** 옵션을 찾을 수 있는 위치를 보여줍니다.

![\[이 이미지는 Amazon MWAA 콘솔에서 퍼블릭 네트워크 옵션을 찾을 수 있는 위치를 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/mwaa/latest/userguide/images/mwaa-console-public-network.png)


### 프라이빗 네트워크


다음 아키텍처 다이어그램은 프라이빗 웹 서버가 있는 Amazon MWAA 환경을 보여줍니다.

![\[이 이미지는 프라이빗 웹 서버가 있는 Amazon MWAA 환경의 아키텍처를 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/mwaa/latest/userguide/images/mwaa-private-web-server.png)


프라이빗 네트워크 액세스 모드를 사용하면 *Amazon VPC 내에서* [사용자 환경의 IAM 정책](access-policies.md)에 대한 액세스 권한을 부여 받은 사용자만 Apache Airflow UI에 액세스할 수 있도록 제한됩니다.

프라이빗 웹 서버 액세스가 가능한 환경을 만들 때는 모든 종속성을 Python 휠 아카이브(`.whl`)에서 패키징한 다음 `requirements.txt`에서 `.whl`을 참조해야 합니다. 휠을 사용하여 종속성을 패키징하고 설치하는 방법에 대한 지침은 [Python 휠을 이용한 종속성 관리](best-practices-dependencies.md#best-practices-dependencies-python-wheels)를 참조하세요.

다음 이미지는 Amazon MWAA 콘솔에서 **프라이빗 네트워크** 옵션을 찾을 수 있는 위치를 보여줍니다.

![\[이 이미지는 Amazon MWAA 콘솔에서 프라이빗 네트워크 옵션을 찾을 수 있는 위치를 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/mwaa/latest/userguide/images/mwaa-console-private-network.png)


## 액세스 모드 개요


이 섹션에서는 **퍼블릭 네트워크** 또는 **프라이빗 네트워크** 액세스 모드를 선택할 때 Amazon VPC에 생성되는 VPC 엔드포인트(AWS PrivateLink)에 대해 설명합니다.

### 퍼블릭 네트워크 액세스 모드


Apache Airflow 웹 서버에 대해 **퍼블릭 네트워크** 액세스 모드를 선택한 경우, 네트워크 트래픽은 인터넷을 통해 공개적으로 라우팅됩니다.
+ Amazon MWAA는 Amazon Aurora PostgreSQL 메타데이터 데이터베이스를 위한 VPC 인터페이스 엔드포인트를 생성합니다. 엔드포인트는 프라이빗 서브넷에 매핑된 가용 영역에 생성되며 다른 AWS 계정와는 독립적입니다.
+ 그러면 Amazon MWAA에서 프라이빗 서브넷의 IP 주소를 인터페이스 엔드포인트에 바인딩합니다. 이는 Amazon VPC의 각 가용 영역에서 단일 IP를 바인딩하는 모범 사례를 지원하도록 설계되었습니다.

### 프라이빗 네트워크 액세스 모드


Apache Airflow 웹 서버에 대해 **프라이빗 네트워크** 액세스 모드를 선택한 경우, 네트워크 트래픽은 *Amazon VPC 내*에서 프라이빗로 라우팅됩니다.
+ Amazon MWAA는 Apache Airflow 웹 서버를 위한 VPC 인터페이스 엔드포인트와, Amazon Aurora PostgreSQL 메타데이터 데이터베이스를 위한 인터페이스 엔드포인트를 생성합니다. 엔드포인트는 프라이빗 서브넷에 매핑된 가용 영역에 생성되며 다른 AWS 계정와는 독립적입니다.
+ 그러면 Amazon MWAA에서 프라이빗 서브넷의 IP 주소를 인터페이스 엔드포인트에 바인딩합니다. 이는 Amazon VPC의 각 가용 영역에서 단일 IP를 바인딩하는 모범 사례를 지원하도록 설계되었습니다.

자세한 내용은 [Amazon VPC 및 Apache Airflow 액세스 모드의 사용 사례 예시](networking-about.md#networking-about-network-usecase) 섹션을 참조하세요.

## 프라이빗 및 퍼블릭 액세스 모드 설정


다음 섹션에서는 환경에 맞게 선택한 Apache Airflow 액세스 모드에 따라 필요한 추가 설정 및 구성을 설명합니다.

### 퍼블릭 네트워크 설정


Apache Airflow 웹 서버의 **퍼블릭 네트워크** 옵션을 선택하면, 환경을 생성한 후 Apache Airflow UI 사용을 시작할 수 있습니다.

사용자에 대한 액세스와 환경에서 다른 AWS 서비스를 사용할 수 있는 권한을 구성하려면 다음 단계를 수행해야 합니다.

1. **권한 추가** Amazon MWAA에는 다른 AWS 서비스를 사용할 수 있는 권한이 필요합니다. 환경을 생성하면, Amazon MWAA에서 Amazon Elastic Container Registry(Amazon ECR), CloudWatch Log 및 Amazon EC2에 대한 특정 IAM 작업을 사용할 수 있도록 해주는 [서비스 연결 역할](mwaa-slr.md)을 생성합니다.

   이러한 서비스에 대해 추가 작업을 사용하거나 실행 역할에 권한을 추가하여 다른 AWS 서비스를 사용할 수 있는 권한을 추가할 수 있습니다. 자세한 내용은 [Amazon MWAA 실행 역할](mwaa-create-role.md) 섹션을 참조하세요.

1. **사용자 정책 생성**. 사용자가 환경 및 Apache Airflow UI에 대한 액세스를 구성하려면 여러 IAM 정책을 생성해야 할 수 있습니다. 자세한 내용은 [Amazon MWAA 환경 액세스](access-policies.md) 섹션을 참조하세요.

### 프라이빗 네트워크 설정


Apache Airflow 웹 서버에 프라이빗 **네트워크** 옵션을 선택하는 경우 사용자에 대한 액세스, 환경에서 다른 AWS 서비스를 사용할 수 있는 권한을 구성하고 컴퓨터에서 Amazon VPC의 리소스에 액세스하는 메커니즘을 생성해야 합니다.

1. **권한 추가** Amazon MWAA에는 다른 AWS 서비스를 사용할 수 있는 권한이 필요합니다. 환경을 생성하면, Amazon MWAA에서 Amazon Elastic Container Registry(Amazon ECR), CloudWatch Log 및 Amazon EC2에 대한 특정 IAM 작업을 사용할 수 있도록 해주는 [서비스 연결 역할](mwaa-slr.md)을 생성합니다.

   이러한 서비스에 대해 추가 작업을 사용하거나 실행 역할에 권한을 추가하여 다른 AWS 서비스를 사용할 수 있는 권한을 추가할 수 있습니다. 자세한 내용은 [Amazon MWAA 실행 역할](mwaa-create-role.md) 섹션을 참조하세요.

1. **사용자 정책 생성**. 사용자가 환경 및 Apache Airflow UI에 대한 액세스를 구성하려면 여러 IAM 정책을 생성해야 할 수 있습니다. 자세한 내용은 [Amazon MWAA 환경 액세스](access-policies.md) 섹션을 참조하세요.

1. **네트워크 액세스 활성화** Apache Airflow 웹 서버의 VPC 엔드포인트(AWS PrivateLink)에 연결하려면 Amazon VPC에서 메커니즘을 생성해야 합니다. 예를 들면, AWS Client VPN를 사용하여 컴퓨터에서 VPN 터널을 만들 수 있습니다. 

## Apache Airflow 웹 서버의 VPC 엔드포인트 액세스(프라이빗 네트워크 액세스)


**프라이빗 네트워크** 옵션을 선택한 경우, Amazon VPC에서 Apache Airflow 웹 서버의 VPC 엔드포인트(AWS PrivateLink)에 액세스할 수 있는 메커니즘을 생성해야 합니다. 이러한 리소스에는 Amazon MWAA 환경과 동일한 Amazon VPC, VPC 보안 그룹 및 프라이빗 서브넷을 사용하는 것이 좋습니다.

자세한 내용은 [VPC 엔드포인트의 액세스 관리](https://docs.aws.amazon.com/mwaa/latest/userguide/vpc-vpe-access.html)를 참조하세요.