Peran MWAA eksekusi Amazon - Amazon Managed Workflows for Apache Airflow (MWAA)

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Peran MWAA eksekusi Amazon

Peran eksekusi adalah peran AWS Identity and Access Management (IAM) dengan kebijakan izin yang memberikan izin kepada Alur Kerja Terkelola Amazon untuk Apache Airflow untuk memanggil sumber daya layanan lain atas nama Anda. AWS Ini dapat mencakup sumber daya seperti bucket Amazon S3, kunci yang AWS dimiliki, dan CloudWatch Log. MWAALingkungan Amazon membutuhkan satu peran eksekusi per lingkungan. Topik ini menjelaskan cara menggunakan dan mengonfigurasi peran eksekusi untuk lingkungan Anda MWAA agar Amazon dapat mengakses AWS sumber daya lain yang digunakan oleh lingkungan Anda.

Ikhtisar peran eksekusi

Izin Amazon MWAA untuk menggunakan AWS layanan lain yang digunakan oleh lingkungan Anda diperoleh dari peran eksekusi. Peran MWAA eksekusi Amazon memerlukan izin untuk AWS layanan berikut yang digunakan oleh lingkungan:

  • Amazon CloudWatch (CloudWatch) — untuk mengirim metrik dan log Apache Airflow.

  • Amazon Simple Storage Service (Amazon S3) — untuk mengurai kode lingkungan Anda dan file pendukung (DAGseperti a). requirements.txt

  • Amazon Simple Queue Service (AmazonSQS) — untuk mengantri tugas Apache Airflow lingkungan Anda dalam SQS antrian Amazon yang dimiliki oleh Amazon. MWAA

  • AWS Key Management Service (AWS KMS) — untuk enkripsi data lingkungan Anda (menggunakan kunci yang AWS dimiliki atau kunci yang dikelola Pelanggan Anda).

    catatan

    Jika Anda telah memilih Amazon MWAA untuk menggunakan KMS kunci yang AWS dimiliki untuk mengenkripsi data Anda, Anda harus menentukan izin dalam kebijakan yang dilampirkan pada peran MWAA eksekusi Amazon Anda yang memberikan akses ke KMS kunci arbitrer yang disimpan di luar akun Anda melalui Amazon. SQS Dua kondisi berikut diperlukan agar peran eksekusi lingkungan Anda dapat mengakses KMS kunci arbitrer:

    • KMSKunci dalam akun pihak ketiga perlu mengizinkan akses lintas akun ini melalui kebijakan sumber dayanya.

    • DAGKode Anda perlu mengakses SQS antrian Amazon yang dimulai dengan airflow-celery- di akun pihak ketiga dan menggunakan KMS kunci yang sama untuk enkripsi.

    Untuk mengurangi risiko yang terkait dengan akses lintas akun ke sumber daya, kami sarankan untuk meninjau kode yang ditempatkan di Anda DAGs untuk memastikan bahwa alur kerja Anda tidak mengakses antrian Amazon yang sewenang-wenang di luar akun Anda. SQS Selain itu, Anda dapat menggunakan KMS kunci yang dikelola pelanggan yang disimpan di akun Anda sendiri untuk mengelola enkripsi di AmazonMWAA. Ini membatasi peran eksekusi lingkungan Anda untuk hanya mengakses KMS kunci di akun Anda.

    Perlu diingat bahwa setelah Anda memilih opsi enkripsi, Anda tidak dapat mengubah pilihan Anda untuk lingkungan yang ada.

Peran eksekusi juga memerlukan izin untuk IAM tindakan berikut:

  • airflow:PublishMetrics— untuk memungkinkan Amazon MWAA memantau kesehatan suatu lingkungan.

Izin dilampirkan secara default

Anda dapat menggunakan opsi default di MWAA konsol Amazon untuk membuat peran eksekusi dan kunci yang AWS dimiliki, lalu gunakan langkah-langkah di halaman ini untuk menambahkan kebijakan izin ke peran eksekusi Anda.

  • Saat Anda memilih opsi Buat peran baru di konsol, Amazon MWAA melampirkan izin minimal yang diperlukan oleh lingkungan ke peran eksekusi Anda.

  • Dalam beberapa kasus, Amazon MWAA melampirkan izin maksimum. Misalnya, sebaiknya pilih opsi di MWAA konsol Amazon untuk membuat peran eksekusi saat Anda membuat lingkungan. Amazon MWAA menambahkan kebijakan izin untuk semua grup CloudWatch Log secara otomatis dengan menggunakan pola regex dalam peran eksekusi sebagai. "arn:aws:logs:your-region:your-account-id:log-group:airflow-your-environment-name-*"

Cara menambahkan izin untuk menggunakan AWS layanan lain

Amazon tidak MWAA dapat menambahkan atau mengedit kebijakan izin ke peran eksekusi yang ada setelah lingkungan dibuat. Anda harus memperbarui peran eksekusi Anda dengan kebijakan izin tambahan yang diperlukan oleh lingkungan Anda. Misalnya, jika Anda DAG memerlukan akses ke AWS Glue, Amazon tidak MWAA dapat secara otomatis mendeteksi izin ini diperlukan oleh lingkungan Anda, atau menambahkan izin ke peran eksekusi Anda.

Anda dapat menambahkan izin ke peran eksekusi dengan dua cara:

  • Dengan memodifikasi JSON kebijakan untuk peran eksekusi Anda secara inline. Anda dapat menggunakan contoh dokumen JSON kebijakan di halaman ini untuk menambah atau mengganti JSON kebijakan peran eksekusi Anda di IAM konsol.

  • Dengan membuat JSON kebijakan untuk AWS layanan dan melampirkannya ke peran eksekusi Anda. Anda dapat menggunakan langkah-langkah di halaman ini untuk mengaitkan dokumen JSON kebijakan baru untuk AWS layanan ke peran eksekusi Anda di IAM konsol.

Dengan asumsi peran eksekusi sudah terkait dengan lingkungan Anda, Amazon MWAA dapat segera mulai menggunakan kebijakan izin yang ditambahkan. Ini juga berarti jika Anda menghapus izin yang diperlukan dari peran eksekusi, Anda DAGs mungkin gagal.

Cara mengaitkan peran eksekusi baru

Anda dapat mengubah peran eksekusi untuk lingkungan Anda kapan saja. Jika peran eksekusi baru belum dikaitkan dengan lingkungan Anda, gunakan langkah-langkah di halaman ini untuk membuat kebijakan peran eksekusi baru, dan kaitkan peran tersebut dengan lingkungan Anda.

Buat peran baru

Secara default, Amazon MWAA membuat kunci yang AWS dimiliki untuk enkripsi data dan peran eksekusi atas nama Anda. Anda dapat memilih opsi default di MWAA konsol Amazon saat membuat lingkungan. Gambar berikut menunjukkan opsi default untuk membuat peran eksekusi untuk lingkungan.

Ini adalah gambar dengan opsi default untuk membuat peran baru.

Melihat dan memperbarui kebijakan peran eksekusi

Anda dapat melihat peran eksekusi untuk lingkungan Anda di MWAA konsol Amazon, dan memperbarui JSON kebijakan untuk peran tersebut di IAM konsol.

Untuk memperbarui kebijakan peran eksekusi
  1. Buka halaman Lingkungan di MWAA konsol Amazon.

  2. Pilih lingkungan.

  3. Pilih peran eksekusi pada panel Izin untuk membuka halaman izin. IAM

  4. Pilih nama peran eksekusi untuk membuka kebijakan izin.

  5. Pilih Sunting kebijakan.

  6. Pilih JSONtab.

  7. Perbarui JSON kebijakan Anda.

  8. Pilih Tinjau kebijakan.

  9. Pilih Simpan perubahan.

Lampirkan JSON kebijakan untuk menggunakan AWS layanan lain

Anda dapat membuat JSON kebijakan untuk AWS layanan dan melampirkannya ke peran eksekusi Anda. Misalnya, Anda dapat melampirkan JSON kebijakan berikut untuk memberikan akses hanya-baca ke semua sumber daya di. AWS Secrets Manager

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource":[ "*" ] } ] }
Untuk melampirkan kebijakan ke peran eksekusi Anda
  1. Buka halaman Lingkungan di MWAA konsol Amazon.

  2. Pilih lingkungan.

  3. Pilih peran eksekusi Anda di panel Izin.

  4. Pilih Lampirkan kebijakan.

  5. Pilih Buat kebijakan.

  6. Pilih JSON.

  7. Tempelkan JSON kebijakan.

  8. Pilih Berikutnya: Tag, Berikutnya: Ulasan.

  9. Masukkan nama deskriptif (sepertiSecretsManagerReadPolicy) dan deskripsi untuk kebijakan tersebut.

  10. Pilih Buat kebijakan.

Berikan akses ke bucket Amazon S3 dengan blok akses publik tingkat akun

Anda mungkin ingin memblokir akses ke semua bucket di akun Anda dengan menggunakan operasi PutPublicAccessBlockAmazon S3. Saat Anda memblokir akses ke semua bucket di akun, peran eksekusi lingkungan Anda harus menyertakan s3:GetAccountPublicAccessBlock tindakan tersebut dalam kebijakan izin.

Contoh berikut menunjukkan kebijakan yang harus Anda lampirkan ke peran eksekusi saat memblokir akses ke semua bucket Amazon S3 di akun Anda.

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

Untuk informasi selengkapnya tentang membatasi akses ke bucket Amazon S3, lihat Memblokir akses publik ke penyimpanan Amazon S3 Anda di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

Gunakan koneksi Apache Airflow

Anda juga dapat membuat koneksi Apache Airflow dan menentukan peran eksekusi Anda dan ARN dalam objek koneksi Apache Airflow Anda. Untuk mempelajari selengkapnya, lihat Mengelola koneksi ke Apache Airflow.

Contoh JSON kebijakan untuk peran eksekusi

Contoh kebijakan izin di bagian ini menampilkan dua kebijakan yang dapat Anda gunakan untuk mengganti kebijakan izin yang digunakan untuk peran eksekusi yang ada, atau untuk membuat peran eksekusi baru dan digunakan untuk lingkungan Anda. Kebijakan ini berisi ARN placeholder Resource untuk grup log Apache Airflow, bucket Amazon S3, dan lingkungan Amazon. MWAA

Sebaiknya salin kebijakan contoh, ganti sampel ARNs atau placeholder, lalu gunakan JSON kebijakan untuk membuat atau memperbarui peran eksekusi. Misalnya, mengganti {your-region} denganus-east-1.

Contoh kebijakan untuk kunci yang dikelola pelanggan

Contoh berikut menunjukkan kebijakan peran eksekusi yang dapat Anda gunakan untuk kunci yang dikelola Pelanggan.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "s3:ListAllMyBuckets", "Resource": [ "arn:aws:s3:::{your-s3-bucket-name}", "arn:aws:s3:::{your-s3-bucket-name}/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject*", "s3:GetBucket*", "s3:List*" ], "Resource": [ "arn:aws:s3:::{your-s3-bucket-name}", "arn:aws:s3:::{your-s3-bucket-name}/*" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:CreateLogGroup", "logs:PutLogEvents", "logs:GetLogEvents", "logs:GetLogRecord", "logs:GetLogGroupFields", "logs:GetQueryResults" ], "Resource": [ "arn:aws:logs:{your-region}:{your-account-id}: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:{your-region}:*:airflow-celery-*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt" ], "Resource": "arn:aws:kms:{your-region}:{your-account-id}:key/{your-kms-cmk-id}", "Condition": { "StringLike": { "kms:ViaService": [ "sqs.{your-region}.amazonaws.com", "s3.{your-region}.amazonaws.com" ] } } } ] }

Selanjutnya, Anda perlu mengizinkan Amazon MWAA untuk mengambil peran ini untuk melakukan tindakan atas nama Anda. Hal ini dapat dilakukan dengan menambahkan "airflow.amazonaws.com" dan "airflow-env.amazonaws.com" melayani prinsipal ke daftar entitas tepercaya untuk peran eksekusi ini menggunakan IAM konsol, atau dengan menempatkan prinsip layanan ini dalam dokumen kebijakan peran asumsi untuk peran eksekusi ini melalui perintah create-role menggunakan. IAM AWS CLI Contoh dokumen kebijakan peran asumsi dapat ditemukan di bawah ini:

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

Kemudian lampirkan JSON kebijakan berikut ke kunci yang dikelola Pelanggan Anda. Kebijakan ini menggunakan awalan kunci kms:EncryptionContextkondisi untuk mengizinkan akses ke grup log Apache Airflow Anda di Log. CloudWatch

{ "Sid": "Allow logs access", "Effect": "Allow", "Principal": { "Service": "logs.{your-region}.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnLike": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:{your-region}:{your-account-id}:*" } } }

Contoh kebijakan untuk kunci yang AWS dimiliki

Contoh berikut menunjukkan kebijakan peran eksekusi yang dapat Anda gunakan untuk kunci yang AWS dimiliki.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "airflow:PublishMetrics", "Resource": "arn:aws:airflow:{your-region}:{your-account-id}:environment/{your-environment-name}" }, { "Effect": "Deny", "Action": "s3:ListAllMyBuckets", "Resource": [ "arn:aws:s3:::{your-s3-bucket-name}", "arn:aws:s3:::{your-s3-bucket-name}/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject*", "s3:GetBucket*", "s3:List*" ], "Resource": [ "arn:aws:s3:::{your-s3-bucket-name}", "arn:aws:s3:::{your-s3-bucket-name}/*" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:CreateLogGroup", "logs:PutLogEvents", "logs:GetLogEvents", "logs:GetLogRecord", "logs:GetLogGroupFields", "logs:GetQueryResults" ], "Resource": [ "arn:aws:logs:{your-region}:{your-account-id}: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:{your-region}:*:airflow-celery-*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt" ], "NotResource": "arn:aws:kms:*:{your-account-id}:key/*", "Condition": { "StringLike": { "kms:ViaService": [ "sqs.{your-region}.amazonaws.com" ] } } } ] }

Apa selanjutnya?