Peran eksekusi Amazon MWAA - 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 eksekusi Amazon MWAA

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. Lingkungan Amazon MWAA membutuhkan satu peran eksekusi per lingkungan. Halaman 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 diperoleh 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 a). requirements.txt

  • Amazon Simple Queue Service (Amazon SQS) — untuk mengantri tugas Apache Airflow lingkungan Anda dalam antrian Amazon SQS 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 kunci KMS AWS terkelola untuk mengenkripsi data Anda, maka Anda harus menentukan izin dalam kebijakan yang dilampirkan pada peran eksekusi Amazon MWAA Anda yang memberikan akses ke kunci KMS arbitrer 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 perlu mengizinkan akses lintas akun ini melalui kebijakan sumber dayanya.

    • Kode DAG Anda perlu mengakses antrean Amazon SQS yang dimulai dengan airflow-celery- di 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 bahwa alur kerja Anda tidak mengakses antrian Amazon SQS sewenang-wenang di luar akun Anda. Selanjutnya, 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 hanya mengakses 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 suatu 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 di 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:your-region:your-account-id:log-group:airflow-your-environment-name-*"

Cara menambahkan izin untuk menggunakan AWS layanan lain

Amazon MWAA tidak 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 DAG Anda memerlukan akses ke AWS Glue, Amazon MWAA tidak 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 kebijakan JSON untuk peran eksekusi Anda secara inline. 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 ke peran eksekusi Anda di konsol IAM.

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, 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 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 konsol Amazon MWAA saat Anda 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 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.

Lampirkan kebijakan JSON untuk menggunakan layanan lain AWS

Anda dapat membuat kebijakan JSON untuk AWS layanan dan melampirkannya ke peran eksekusi Anda. Misalnya, Anda dapat melampirkan kebijakan JSON 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 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 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 di objek koneksi Apache Airflow Anda. Untuk mempelajari selengkapnya, lihat Mengelola koneksi ke Apache Airflow.

Contoh kebijakan JSON 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 placeholder ARN Resource untuk grup log Apache Airflow, bucket Amazon S3, dan lingkungan Amazon MWAA.

Sebaiknya salin kebijakan contoh, ganti contoh ARN atau placeholder, lalu gunakan kebijakan JSON 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": "*" }, { "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. Ini dapat dilakukan dengan menambahkan "airflow.amazonaws.com" dan "airflow-env.amazonaws.com" melayani prinsipal 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 create-role IAM menggunakan. 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 kebijakan JSON 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": "*" }, { "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?