Realtime Compute for Apache Flink mendukung referensi peran RAM dalam namespace. Dengan mengasumsikan peran RAM, pekerjaan menggunakan token STS sementara alih-alih pasangan Kunci Akses dalam teks biasa untuk mengakses sumber daya Alibaba Cloud. Pendekatan ini memungkinkan akses tanpa kredensial, kontrol izin detail halus, serta pengelolaan kredensial yang bebas maintenance.
Ikhtisar
Dengan mereferensikan peran RAM, Anda dapat menggunakan peran tersebut untuk mengakses layanan Alibaba Cloud lainnya, seperti OSS dan KMS, dari pekerjaan Flink tanpa mengekspos pasangan Kunci Akses dalam teks biasa di kode pekerjaan.
Manfaat utama:
-
Perlindungan informasi sensitif: Tidak ada pasangan Kunci Akses yang diekspos dalam pekerjaan. Token STS peran RAM menggantikan kredensial statis.
-
Kontrol izin detail halus: Kebijakan izin peran RAM dapat dikustomisasi. Connector berbeda dapat menggunakan peran berbeda untuk menerapkan prinsip hak istimewa minimal.
-
Kredensial bebas maintenance: Token STS diperoleh dan diperbarui secara otomatis oleh sistem tanpa perlu mengelola rotasi kredensial.
Untuk detail selengkapnya, lihat Apendiks: Alur pemanggilan STS.
Catatan
Penghapusan atau modifikasi izin dan kebijakan kepercayaan peran RAM di RAM secara tidak benar dapat menyebabkan pekerjaan Flink gagal karena tidak dapat mengakses sumber daya cloud. Menurut Service Level Agreement for Realtime Compute for Apache Flink, ketidaktersediaan yang disebabkan oleh penggunaan sumber daya yang tidak tepat oleh pelanggan tidak dicakup oleh SLA.
Batasan
-
Hanya mesin VVR 11.8 dan versi lebih baru yang didukung. OSS Connector dan Postgres CDC Connector mendukung akses ke sumber daya cloud dengan peran RAM.
-
Maksimal 10 peran RAM dapat direferensikan per ruang kerja.
-
Satu operasi penambahan mendukung pemilihan hingga 5 peran.
-
Hanya peran layanan reguler (SR) yang dapat direferensikan. Peran terkait layanan (SLR) tidak didukung.
-
Token STS tidak didukung untuk debugging lokal pekerjaan PyFlink dan Flink JAR. Pekerjaan harus disebarkan ke kluster terlebih dahulu.
-
Hanya otentikasi identitas RAM untuk layanan Alibaba Cloud yang didukung.
Persiapan izin
-
Langkah 1 dan Langkah 2: Operator harus diberikan kebijakan
AliyunRAMFullAccess, atau diberikan izin manajemen peran RAM dan pengelolaan izin secara terpisah. Untuk informasi lebih lanjut, lihat Create a custom policy dan API overview for RAM role management and permission management. -
Langkah 3: Operator harus memiliki izin editor atau lebih tinggi pada namespace Flink, atau diberikan izin detail halus untuk mereferensikan peran RAM dan mengembangkan pekerjaan. Untuk detail selengkapnya, lihat Grant permissions to access the development console.
Langkah 1: Buat dan konfigurasikan peran RAM
Peran ini adalah kredensial identitas yang digunakan layanan Flink untuk mengakses sumber daya cloud lainnya. Flink mengasumsikan peran ini untuk memperoleh kredensial sementara dan mengakses sumber daya cloud sebagai peran tersebut.
1. Buat peran RAM
-
Login ke halaman RAM console - Roles dan klik Create Role. Pertahankan opsi default (entitas tepercaya adalah Akun Alibaba Cloud saat ini), lalu klik OK.
-
Masukkan nama peran yang mudah dikenali, misalnya
FlinkRoleForOSSRead, lalu klik OK.
2. Tambahkan kebijakan kepercayaan
Flink mengasumsikan peran RAM untuk memperoleh kredensial sementara. Peran RAM harus mempercayai Flink untuk mengasumsikannya.
Setelah peran dibuat, pada halaman detail peran, klik tab Trust Policy lalu klik Edit Trust Policy. Tambahkan "Service": ["stream.aliyuncs.com"] ke dalam Principal agar Flink dipercaya untuk mengasumsikan peran tersebut. Untuk informasi lebih lanjut, lihat Modify the trust policy of a RAM role.
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"stream.aliyuncs.com"
]
}
}
],
"Version": "1"
}
3. Berikan izin untuk mengakses sumber daya cloud
Flink menggunakan identitas peran RAM untuk mengakses sumber daya cloud. Berikan izin yang diperlukan kepada peran RAM terlebih dahulu untuk mencegah error akses.
Pada halaman detail peran, klik tab Permissions lalu klik Grant Permission untuk memberikan izin kepada peran agar dapat mengakses sumber daya cloud target.
Sebagai contoh, untuk mengakses OSS, berikan izin AliyunOSSReadOnlyAccess (read-only) atau AliyunOSSFullAccess (penuh). Untuk informasi lebih lanjut, lihat Grant permissions to a RAM role.
Langkah 2: Berikan izin kepada Pengguna RAM
Buat kebijakan izin dan berikan kepada Pengguna RAM. Hal ini memungkinkan pengguna untuk pass peran RAM yang dibuat pada Langkah 1 ke layanan Flink untuk diasumsikan.
Jika Pengguna RAM pada Langkah 3 sudah dikaitkan dengan kebijakan AliyunRAMFullAccess atau AliyunStreamFullAccess, pengguna tersebut sudah memiliki izin PassRole. Anda dapat melewati langkah ini.
Buat kebijakan izin
Login ke halaman RAM console - Policies lalu klik Create Policy. Beralih ke mode Script dan edit konten kebijakan.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ram:ListRoles"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "ram:PassRole",
"Resource": "acs:ram::<account-id>:role/<role-name>",
"Condition": {
"StringEquals": {
"acs:Service": "stream.aliyuncs.com"
}
}
}
]
}
|
Izin |
Deskripsi |
|
|
Memungkinkan pengguna melihat daftar peran di bawah akun, sehingga peran dapat dipilih di Konsol Flink. |
|
|
Memungkinkan pengguna meneruskan peran tertentu ke layanan cloud Flink. Ganti
Tambahkan |
Klik OK untuk menyimpan kebijakan, misalnya sebagai FlinkPassRolePolicy. Untuk informasi lebih lanjut, lihat Create a custom policy.
Berikan izin kepada Pengguna RAM
-
Login ke halaman RAM console - Users. Temukan Pengguna RAM yang akan diberi otorisasi, lalu klik Add Permissions pada kolom Actions.
-
Pada panel Add Permissions, cari dan pilih kebijakan yang dibuat pada Langkah 2 (misalnya,
FlinkPassRolePolicy), lalu klik Confirm. Untuk informasi lebih lanjut, lihat Grant permissions to a RAM user.
Langkah 3: Referensikan peran RAM di Flink
Pengguna yang diberi otorisasi pada Langkah 2 dapat meneruskan peran RAM dari Langkah 1 ke Flink. Flink mengasumsikan peran tersebut untuk memperoleh kredensial sementara dan mengakses sumber daya cloud sebagai peran tersebut.
Tambahkan referensi peran RAM
-
Login ke Konsol Realtime Compute dan masuk ke ruang kerja target.
-
Pada panel navigasi kiri, pilih .
-
Klik tab RAM Roles.
-
Klik Reference RAM Role.
-
Pada kotak dialog, konfigurasikan hal berikut:
Item
Wajib
Deskripsi
RAM role
Ya
Pilih peran dari daftar drop-down. Pencarian fuzzy berdasarkan nama peran dan multi-pilih (maksimal 5 per operasi) didukung. Peran yang telah direferensikan tidak dapat dipilih lagi.
Catatan-
Daftar peran berisi peran layanan reguler di bawah Akun Alibaba Cloud yang memiliki namespace saat ini.
-
Operator harus berada dalam Akun Alibaba Cloud yang sama dengan namespace saat ini dan memiliki izin
ListRolesuntuk melihat daftar peran.
Description
Tidak
Deskripsi peran. Maksimal 256 karakter.
-
-
Klik Test. Sistem secara otomatis memeriksa dua hal berikut:
-
Pemeriksaan izin PassRole: Pengguna saat ini memiliki izin
ram:PassRolepada peran RAM yang dipilih. -
Pemeriksaan kebijakan kepercayaan: Peran RAM yang dipilih mempercayai namespace Flink saat ini untuk mengasumsikannya.
-
-
Setelah pemeriksaan berhasil, klik OK.
Gunakan peran RAM dalam pekerjaan
Setelah peran RAM direferensikan, tentukan nama peran menggunakan parameter akless.assume-role.role-name dalam kode pekerjaan. Flink mengasumsikan peran tersebut untuk memperoleh token STS sementara dan mengakses sumber daya cloud sebagai peran tersebut.
Hanya OSS Connector dan Postgres CDC Connector pada mesin VVR 11.8 dan versi lebih baru yang mendukung fitur ini.
Deskripsi parameter
|
Parameter |
Tipe |
Wajib |
Deskripsi |
|
akless.assume-role.role-name |
String |
Tidak |
Nama peran RAM, misalnya |
Aturan prioritas
-
Jika pasangan Kunci Akses (accessKeyId + accessKeySecret) ditentukan secara eksplisit, pasangan Kunci Akses tersebut memiliki prioritas tertinggi.
-
Jika tidak ada pasangan Kunci Akses yang ditentukan tetapi parameter
akless.assume-role.role-nameditentukan, maka token STS dari peran tersebut akan digunakan. -
Connector berbeda dalam satu pekerjaan dapat menggunakan peran berbeda dengan menentukan nilai
akless.assume-role.role-nameyang berbeda.
Contoh OSS
Tambahkan konfigurasi berikut di bawah Other Configuration pada bagian Runtime Parameters di tab Deployment Details:
# OSS
fs.oss.bucket.<bucketName>.akless.assume-role.role-name: <your-role-name>
fs.oss.inner.bucket: <workspace-associated-bucket-name>
# OSS-HDFS
fs.oss.jindo.akless.assume-role.role-name: <your-role-name>
|
Parameter |
Deskripsi |
|
|
Nama bucket dalam parameter path sistem file target ( |
|
|
Periksa bidang Storage Type pada halaman daftar ruang kerja untuk menentukan apakah ruang kerja menggunakan bucket OSS yang dikelola sendiri atau penyimpanan fully managed, lalu peroleh nama bucket sesuai:
|
|
|
Nama peran RAM yang digunakan untuk mengakses OSS. |
Kelola referensi peran RAM
Menyunting atau menghapus peran RAM di Flink hanya memengaruhi referensi Flink terhadap peran RAM tersebut. Hal ini tidak langsung memodifikasi peran RAM itu sendiri.
Sunting peran RAM
-
Di bawah Security Services > Access Security > RAM Roles, temukan peran target lalu klik Edit pada kolom Actions.
-
Pada kotak dialog, ubah deskripsi. Nama peran tidak dapat diubah.
-
Klik Test. Setelah pemeriksaan berhasil, klik OK.
Hapus peran RAM
Setelah Anda menghapus peran RAM, semua pekerjaan di namespace saat ini yang mereferensikan peran tersebut akan gagal. Lanjutkan dengan hati-hati.
-
Di bawah Security Services > Access Security > RAM Roles, temukan peran target lalu klik Remove pada kolom Actions.
-
Pada kotak dialog konfirmasi, masukkan nama peran lalu klik Confirm Removal.
Segarkan status peran
Klik Refresh di pojok kanan atas daftar RAM Roles untuk memeriksa status semua peran yang direferensikan secara massal.
|
Status |
Deskripsi |
|
Normal |
Peran tersebut ada di RAM dan token STS-nya valid. |
|
Abnormal |
Peran tersebut telah dihapus dari RAM, atau kebijakan kepercayaannya tidak lagi mengizinkan Flink untuk mengasumsikannya. Pekerjaan yang mereferensikan peran ini mungkin berjalan tidak normal. |
Apendiks: Alur pemanggilan STS
Alibaba Cloud RAM menyediakan dua model otorisasi inti terkait peran: asumsi langsung (AssumeRole) dan otorisasi terdelegasi (PassRole).
Model 1: Asumsi langsung (sts:AssumeRole)
-
Aksi inti: Entitas tepercaya (seperti Pengguna RAM atau aplikasi) secara aktif memanggil API STS
AssumeRoleuntuk memperoleh kredensial sementara untuk peran RAM, sehingga secara efektif "bertransformasi" menjadi peran tersebut. -
Rantai otorisasi:
Entity A→Calls sts:AssumeRole→Assumes Role R→Obtains Role R permissions. -
Persyaratan izin: Entity A harus diberikan izin
sts:AssumeRole. -
Skenario khas: Aplikasi yang berjalan di ECS atau server lokal perlu mengakses OSS secara sementara. Aplikasi tersebut menggunakan pasangan Kunci Akses miliknya sendiri untuk memanggil
AssumeRole, memperoleh kredensial sementara, lalu menggunakannya untuk mengakses OSS. Dalam skenario ini, Entity A adalah pelaksana aktif.
Model 2: Otorisasi terdelegasi (ram:PassRole)
-
Aksi inti: Entitas (seperti Pengguna RAM) "meneruskan" peran RAM ke layanan cloud (seperti Flink), memberi otorisasi kepada layanan tersebut untuk mengasumsikan peran tersebut. Pengguna tidak mengasumsikan peran tersebut.
-
Rantai otorisasi: User_B → Passes Role_A → To the cloud service → The cloud service calls
sts:AssumeRoleto assume Role_A → The cloud service obtains Role_A permissions. -
Persyaratan izin: User B harus diberikan izin
ram:PassRole, dan Role A harus mempercayai layanan cloud untuk mengasumsikannya. -
Skenario khas: Developer (User_B) mengembangkan pekerjaan di Konsol Flink dan menentukan peran (Role_A). Untuk memungkinkan layanan Flink mengakses sumber daya cloud atas nama pengguna, pengguna harus memiliki izin untuk meneruskan Role_A ke layanan Flink. Dalam skenario ini, pengguna adalah pemberi otorisasi, dan layanan cloud adalah pelaksana.
Contoh: Flink mengakses OSS
Alur interaksi model otorisasi terdelegasi (PassRole) terdiri dari fase konfigurasi dan fase waktu proses:
-
Fase konfigurasi:
-
Administrator RAM menyelesaikan penyiapan dasar, termasuk membuat peran, mengonfigurasi izin dan hubungan kepercayaannya, serta memberikan izin
PassRolekepada pengguna. -
Pengguna menambahkan referensi peran RAM di Flink. Platform Flink memverifikasi bahwa pengguna diotorisasi untuk "meneruskan" peran tersebut dan bahwa peran tersebut mempercayai Flink untuk mengasumsikannya.
-
-
Fase waktu proses:
-
Layanan mengasumsikan peran: Layanan Flink (
stream.aliyuncs.com), sebagai pihak yang sebenarnya mengasumsikan peran, mengirim permintaanAssumeRoleke STS. -
Otorisasi STS dan eksekusi layanan: STS mengonfirmasi bahwa Flink dipercaya oleh Role A, lalu menerbitkan kredensial sementara. Layanan Flink menggunakan kredensial tersebut untuk mengakses OSS dan menyelesaikan tugas yang didelegasikan oleh pengguna.
-