Amazon MWAA 환경 액세스 - Amazon Managed Workflows for Apache Airflow

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

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 역할은 계정에 생성할 수 있는, 특정 권한을 지닌 IAM 자격 증명입니다. IAM 역할은 자격 증명이 수행할 수 있는 작업과 수행할 수 없는 작업을 결정하는 권한 정책을 가진 AWS ID라는 점에서 IAM 사용자와 유사합니다. AWS그러나 역할은 한 사람하고만 연관되지 않고 해당 역할이 필요한 사람이라면 누구든지 맡을 수 있어야 합니다. 또한 역할에는 그와 연관된 암호 또는 액세스 키와 같은 표준 장기 자격 증명이 없습니다. 대신에 역할을 맡은 사람에게는 해당 역할 세션을 위한 임시 보안 자격 증명이 제공됩니다.

페더레이션 아이덴티티에 권한을 부여하려면 역할을 생성하고 해당 역할의 권한을 정의해주면 됩니다. 페더레이션 자격 증명이 인증되면 역할이 연결되고 역할에 정의된 권한이 부여됩니다. 페더레이션 역할에 대한 자세한 내용은 IAM 사용 설명서 타사 자격 증명 공급자의 역할 만들기를 참조하세요. IAM Identity Center를 사용하는 경우 권한 세트를 구성합니다. 인증 후 아이덴티티가 액세스할 수 있는 항목을 제어하기 위해 IAM Identity Center는 권한 세트를 IAM의 역할과 연관 짓습니다. 권한 세트에 대한 자세한 내용은 AWS IAM Identity Center 사용 설명서 권한 세트를 참조하세요.

계정의 IAM 역할을 사용하여 계정 리소스에 액세스할 수 있는 다른 AWS 계정 권한을 부여할 수 있습니다. 예를 들어 IAM 사용 설명서의 자습서: IAM 역할 AWS 계정 사용에 대한 액세스 위임을 참조하십시오.

작동 방식

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

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

이 단원의 JSON 정책을 사용하여 IAM에서 Apache Airflow 사용자를 위한 정책을 생성한 다음, 해당 정책을 IAM의 사용자, 그룹 또는 역할에 연결할 수 있습니다.

액세스 권한을 제공하려면 사용자, 그룹 또는 역할에 권한을 추가하세요:

  • 다음 AWS IAM Identity Center분야의 사용자 및 그룹:

    권한 세트를 생성합니다. AWS IAM Identity Center 사용 설명서의 권한 세트 생성의 지침을 따르세요.

  • ID 제공자를 통해 IAM에서 관리되는 사용자:

    ID 페더레이션을 위한 역할을 생성합니다. IAM 사용 설명서의 서드 파티 자격 증명 공급자의 역할 만들기(연합)의 지침을 따르세요.

  • IAM 사용자:

    • 사용자가 맡을 수 있는 역할을 생성합니다. IAM 사용 설명서에서 IAM 사용자의 역할 생성의 지침을 따르세요.

    • (권장되지 않음)정책을 사용자에게 직접 연결하거나 사용자를 사용자 그룹에 추가합니다. IAM 사용 설명서에서 사용자(콘솔)에 권한 추가의 지침을 따르세요.

전체 콘솔 액세스 정책: 아마존 FullConsole MWAA 액세스

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

참고

전체 콘솔 액세스 정책에는 iam:PassRole을 수행할 수 있는 권한이 포함되어야 합니다. 이를 통해 사용자는 서비스 연결 역할실행 역할을 Amazon MWAA에 전달할 수 있습니다. Amazon MWAA는 사용자를 대신하여 다른 AWS 서비스를 호출하기 위해 각 역할을 맡습니다. 다음 예제는 iam:PassedToService 조건 키를 사용하여 Amazon MWAA 서비스 주체(airflow.amazonaws.com)를 역할 전달이 가능한 서비스로 지정합니다.

에 대한 iam:PassRole 자세한 내용은 IAM 사용 설명서의 AWS 서비스에 역할을 전달할 수 있는 사용자 권한 부여를 참조하십시오.

저장 중 암호화를 위해 AWS 소유 키를 사용하여 Amazon MWAA 환경을 만들고 관리하려면 다음 정책을 사용합니다.

{ "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::YOUR_ACCOUNT_ID:policy/service-role/MWAA-Execution-Policy*" }, { "Effect":"Allow", "Action":[ "iam:AttachRolePolicy", "iam:CreateRole" ], "Resource":"arn:aws:iam::YOUR_ACCOUNT_ID: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/*" ] } ] }

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

{ "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::YOUR_ACCOUNT_ID:policy/service-role/MWAA-Execution-Policy*" }, { "Effect":"Allow", "Action":[ "iam:AttachRolePolicy", "iam:CreateRole" ], "Resource":"arn:aws:iam::YOUR_ACCOUNT_ID: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:*:YOUR_ACCOUNT_ID: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 및 콘솔 액세스 정책: FullApi AmazonMWAA 액세스

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

참고

전체 API 액세스 정책에는 iam:PassRole을 수행할 권한이 포함되어야 합니다. 이를 통해 사용자는 서비스 연결 역할실행 역할을 Amazon MWAA에 전달할 수 있습니다. Amazon MWAA는 사용자를 대신하여 다른 AWS 서비스를 호출하기 위해 각 역할을 맡습니다. 다음 예제는 iam:PassedToService 조건 키를 사용하여 Amazon MWAA 서비스 주체(airflow.amazonaws.com)를 역할 전달이 가능한 서비스로 지정합니다.

에 대한 iam:PassRole 자세한 내용은 IAM 사용 설명서의 AWS 서비스에 역할을 전달할 수 있는 사용자 권한 부여를 참조하십시오.

저장 중 암호화를 사용하여 Amazon MWAA 환경을 생성하고 관리하려면 다음 정책을 사용하십시오. AWS 소유 키

{ "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 리소스에 액세스할 수 있는 권한이 있어야 합니다.

{ "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:*:YOUR_ACCOUNT_ID: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/*" ] } ] }

읽기 전용 콘솔 액세스 정책: AmazonMWAA 액세스 ReadOnly

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

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

아파치 에어플로우 UI 액세스 정책: 아마존 MWAA 액세스 WebServer

사용자가 Apache Airflow UI에 액세스해야 하는 경우, AmazonMWAAWebServerAccess 권한 정책에 대한 액세스 권한이 필요할 수 있습니다. 이에 의해 사용자가 Amazon MWAA 콘솔에서 환경을 보거나 Amazon MWAA API를 사용하여 어떤 작업을 수행할 수 있도록 허용되는 것은 아닙니다. {airflow-role}에서 Admin, Op, User, Viewer 또는 Public 역할을 지정하여 웹 토큰 사용자의 액세스 수준을 사용자 지정합니다. 자세한 내용은 Apache Airflow 참조 가이드기본 역할을 참조하십시오.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "airflow:CreateWebLoginToken", "Resource": [ "arn:aws:airflow:{your-region}:YOUR_ACCOUNT_ID:role/{your-environment-name}/{airflow-role}" ] } ] }
참고

Amazon MWAA는 다섯 가지 기본 Apache Airflow 역할 기반 액세스 제어(RBAC) 역할과의 IAM 통합 기능을 제공합니다. 사용자 지정 Apache Airflow 역할을 사용하는 방법에 대한 자세한 내용은 튜토리얼: DAG의 하위 집합에 대한 Amazon MWAA 사용자 액세스 제한 단원을 참조하십시오.

아파치 에어플로우 CLI 정책: 아마존MWAA 액세스 AirflowCli

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "airflow:CreateCliToken" ], "Resource": "*" } ] }

JSON 정책 생성

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

JSON 정책 생성
  1. IAM 콘솔에서 정책 페이지를 엽니다.

  2. 정책 생성을 선택합니다.

  3. JSON 탭을 선택합니다.

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

  5. 정책 검토를 선택합니다.

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

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

  7. 정책 생성(Create policy)을 선택합니다.

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

Apache Airflow 개발 팀의 모든 개발자에게 권한을 부여하기 위해 IAM에서 이름이 AirflowDevelopmentGroup으로 지정된 그룹을 사용하고 있다고 가정해 보겠습니다. 이러한 사용자는AmazonMWAAFullConsoleAccess, AmazonMWAAAirflowCliAccess, 및 AmazonMWAAWebServerAccess 권한 정책에 액세스할 수 있어야 합니다. 이 섹션에서는 IAM에서 그룹을 생성하고, 정책을 생성 및 연결하며, 이 그룹을 IAM 사용자와 연결하는 방법을 설명합니다. 이 단계에서는 AWS 소유 키를 사용한다고 가정합니다.

아마존 MWAA 정책을 FullConsoleAccess 만들려면
  1. 아마존 MWAA 액세스 정책을 다운로드하십시오. FullConsoleAccess

  2. IAM 콘솔에서 정책 페이지를 엽니다.

  3. 정책 생성을 선택합니다.

  4. JSON 탭을 선택합니다.

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

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

    1. {your-account-id} — 계정 ID (예:) AWS 0123456789

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

  7. 정책 검토를 선택합니다.

  8. 이름AmazonMWAAFullConsoleAccess를 입력합니다.

  9. 정책 생성(Create policy)을 선택합니다.

아마존 MWAA 정책을 만들려면 WebServerAccess
  1. 아마존 MWAA 액세스 정책을 다운로드하십시오. WebServerAccess

  2. IAM 콘솔에서 정책 페이지를 엽니다.

  3. 정책 생성을 선택합니다.

  4. JSON 탭을 선택합니다.

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

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

    1. {your-region} - Amazon MWAA 환경의 리전(예: us-east-1)

    2. {your-account-id} — 계정 ID (예:) AWS 0123456789

    3. {your-environment-name} - 사용자의 Amazon MWAA 환경 이름(예: MyAirflowEnvironment)

    4. {airflow-role} - Admin Apache Airflow의 기본 역할

  7. 정책 검토를 선택합니다.

  8. 이름AmazonMWAAWebServerAccess를 입력합니다.

  9. 정책 생성(Create policy)을 선택합니다.

아마존 MWAA 정책을 생성하려면 AirflowCliAccess
  1. 아마존 MWAA 액세스 정책을 다운로드하십시오. AirflowCliAccess

  2. IAM 콘솔에서 정책 페이지를 엽니다.

  3. 정책 생성을 선택합니다.

  4. JSON 탭을 선택합니다.

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

  6. 정책 검토를 선택합니다.

  7. 이름AmazonMWAAAirflowCliAccess를 입력합니다.

  8. 정책 생성(Create policy)을 선택합니다.

그룹을 생성하려면
  1. IAM 콘솔의 그룹 페이지를 엽니다.

  2. AirflowDevelopmentGroup 이름을 입력합니다.

  3. 다음 단계를 선택합니다.

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

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

  6. 다음 단계를 선택합니다.

  7. 그룹 생성을 선택합니다.

사용자와 연결하려면
  1. IAM 콘솔에서 사용자 페이지 엽니다.

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

  3. 그룹을 선택합니다.

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

  5. 그룹을 선택합니다. AirflowDevelopment

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

다음 단계