View a markdown version of this page

Peran eksekusi Amazon MWAA - Amazon Managed Workflows for Apache Airflow

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

Peran eksekusi Amazon MWAA

Peran eksekusi adalah peran AWS Identity and Access Management (IAM) dengan kebijakan izin yang memberikan izin alur kerja yang dikelola Amazon untuk Apache Airflow untuk memanggil sumber daya AWS layanan lain atas nama Anda. Ini dapat mencakup sumber daya seperti bucket Amazon S3 Anda, kunci AWS yang dimiliki, dan CloudWatch Log. Lingkungan Amazon MWAA memerlukan satu peran eksekusi per lingkungan. Topik ini menjelaskan cara menggunakan dan mengonfigurasi peran eksekusi untuk lingkungan Anda agar Amazon MWAA 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 berasal dari peran eksekusi. Peran eksekusi Amazon MWAA 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 DAG lingkungan Anda dan file pendukung (seperti arequirements.txt).

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

  • AWS Key Management Service (AWS KMS) — untuk enkripsi data lingkungan Anda (menggunakan kunci AWS milik - atau Customer-managed kunci Anda).

    catatan

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

    • Kunci KMS di akun pihak ketiga harus mengizinkan akses lintas akun ini melalui kebijakan sumber dayanya.

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

    Untuk mengurangi risiko yang terkait dengan akses lintas akun ke sumber daya, sebaiknya tinjau kode yang ditempatkan di DAG Anda untuk memastikan alur kerja Anda tidak mengakses antrian Amazon SQS sewenang-wenang di luar akun Anda. Selain itu, Anda dapat menggunakan kunci KMS yang dikelola pelanggan yang disimpan di akun Anda sendiri untuk mengelola enkripsi di Amazon MWAA. Ini membatasi peran eksekusi lingkungan Anda untuk mengakses hanya kunci KMS 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 tindakan IAM berikut:

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

Izin dilampirkan secara default

Anda dapat menggunakan opsi default di konsol Amazon MWAA 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 pada konsol Amazon MWAA 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:us-east-1:111122223333:log-group:airflow-your-environment-name-*"

Cara menambahkan izin untuk menggunakan yang lain AWS layanan

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

Anda dapat menambahkan izin ke peran eksekusi dengan dua cara:

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

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

Dengan asumsi peran eksekusi sudah dikaitkan 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, DAG Anda 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 ke lingkungan Anda.

Buat peran baru

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

Ini adalah gambar dengan opsi default untuk membuat peran baru.
penting

Saat Anda membuat peran eksekusi baru, jangan gunakan kembali nama peran eksekusi yang dihapus. Nama unik dapat membantu mencegah konflik dan memastikan manajemen sumber daya yang tepat.

Mengakses dan memperbarui kebijakan peran eksekusi

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

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

  2. Pilih lingkungan.

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

  4. Pilih nama peran eksekusi untuk membuka kebijakan izin.

  5. Pilih Sunting kebijakan.

  6. Pilih tab JSON.

  7. Perbarui kebijakan JSON Anda.

  8. Pilih Tinjau kebijakan.

  9. Pilih Simpan perubahan.

Melampirkan kebijakan JSON untuk menggunakan yang lain AWS layanan

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

JSON
{ "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 konsol Amazon MWAA.

  2. Pilih lingkungan.

  3. Pilih peran eksekusi Anda di panel Izin.

  4. Pilih Lampirkan kebijakan.

  5. Pilih Buat kebijakan.

  6. PilihJSON.

  7. Tempelkan kebijakan JSON.

  8. Pilih Berikutnya: Tag, Berikutnya: Ulasan.

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

  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 PutPublicAccessBlock Amazon S3. Saat Anda memblokir akses ke semua bucket di akun Anda, 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.

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

Untuk informasi selengkapnya tentang membatasi akses ke bucket Amazon S3 Anda, lihat Mem blokir 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-nya di objek koneksi Apache Airflow Anda. Untuk mempelajari lebih lanjut, lihatMengelola koneksi ke Apache Airflow.

Contoh kebijakan JSON untuk peran eksekusi

Anda dapat menggunakan dua contoh kebijakan izin di bagian ini 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 placeholder Resource ARN untuk grup log Apache Airflow, bucket Amazon S3, dan lingkungan Amazon MWAA.

Sebaiknya menyalin kebijakan contoh, mengganti contoh ARN atau placeholder, lalu menggunakan kebijakan JSON untuk membuat atau memperbarui peran eksekusi.

Contoh kebijakan untuk kunci yang dikelola pelanggan

Contoh berikut menyajikan kebijakan peran eksekusi yang dapat Anda gunakan untuk Customer-managed kunci.

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", "logs:DescribeLogStreams" ], "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" ] } } } ] }

Selanjutnya, Anda perlu mengizinkan Amazon MWAA untuk mengambil peran ini untuk melakukan tindakan atas nama Anda. Ini dapat dilakukan dengan menambahkan "airflow.amazonaws.com" dan prinsipal "airflow-env.amazonaws.com" layanan ke daftar entitas tepercaya untuk peran eksekusi ini menggunakan konsol IAM, atau dengan menempatkan prinsipal layanan ini dalam dokumen kebijakan peran asumsi untuk peran eksekusi ini melalui perintah IAM cre ate-role menggunakan. AWS CLI Lihat contoh berikut dokumen kebijakan peran asumsi:

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

Kemudian lampirkan kebijakan JSON berikut ke Customer-managed kunci Anda. Kebijakan ini menggunakan awalan kunci kms:EncryptionContext kondisi untuk mengizinkan akses ke grup log Apache Airflow Anda di CloudWatch Log.

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

Kebijakan sampel untuk AWS-kunci yang dimiliki

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

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", "logs:DescribeLogStreams" ], "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" ] } } } ] }

Apa selanjutnya?