Untuk mengakses sumber daya cloud lainnya dari instans DSW, Anda biasanya mengonfigurasi AccessKey guna memverifikasi identitas. Namun, Anda dapat mengaitkan peran RAM dengan instans DSW tersebut sehingga instans menggunakan kredensial identitas sementara dari Security Token Service (STS) yang terkait dengan peran tersebut untuk mengakses sumber daya cloud lainnya. Pendekatan ini menghilangkan kebutuhan konfigurasi AccessKey jangka panjang dan mengurangi risiko kebocoran kunci.
Apa itu peran RAM instans
Peran RAM instans adalah mekanisme identitas sementara berbasis peran yang disediakan untuk instans DSW. Ketika instans DSW diberikan peran RAM:
Proses di dalam instans secara otomatis memperoleh kredensial sementara Security Token Service (STS) melalui layanan meta lokal atau file kredensial.
Kredensial tersebut memiliki kebijakan akses yang terikat pada peran RAM, memungkinkan akses aman ke layanan cloud yang diizinkan seperti Object Storage Service (OSS), MaxCompute, dan DLC.
Penyimpanan AccessKey dalam teks biasa di kode atau konfigurasi sepenuhnya dihindari, sehingga memenuhi persyaratan keamanan dan kepatuhan perusahaan.
Keunggulan utamanya sebagai berikut:
Keamanan dan Kerahasiaan: Menggunakan kredensial sementara STS yang diperbarui secara otomatis, bukan AccessKey jangka panjang, sehingga menghilangkan praktik hard-coding kunci dan risiko kebocorannya.
Nyaman dan Terkendali: Memusatkan pengelolaan izin melalui kebijakan peran RAM. Perubahan kebijakan langsung berlaku tanpa perlu merestart instans atau memperbarui kode.
Terkait Kepercayaan Secara Bawaan: Kredensial dikeluarkan berdasarkan Alibaba Cloud STS, sehingga sumber kredensial dapat dipercaya tanpa memerlukan middleware autentikasi tambahan.
Batasan
Saat ini, satu instans DSW hanya dapat dikaitkan dengan satu peran RAM.
Langkah-langkah implementasi
Langkah 1: Konfigurasikan peran RAM untuk instans DSW
Pada halaman konfigurasi instans DSW, pilih salah satu dari tiga opsi peran berikut:

Skenario 1: Peran default PAI
Platform for AI (PAI) menyediakan peran default. Memberikan peran ini secara otomatis memberikan izin kepada instans untuk mengakses sumber daya berikut tanpa perlu konfigurasi AccessKey tambahan:
Mengirimkan tugas ke proyek MaxCompute tempat pemilik instans memiliki izin eksekusi, menggunakan kit pengembangan perangkat lunak (SDK) ODPS.
Mengakses data di bucket jalur penyimpanan default yang dikonfigurasi untuk ruang kerja saat ini, menggunakan SDK Object Storage Service (OSS).
Menggunakan layanan Tongyi Lingma di WebIDE.
Membuat dan mengirimkan tugas pelatihan ke ruang kerja saat ini, menggunakan SDK PAI/DLC.
Skenario 2: Peran kustom
Login ke Konsol Resource Access Management (RAM) dan buat peran RAM. Untuk informasi selengkapnya, lihat dokumen referensi.
Pengaturan parameter utama sebagai berikut:
Jenis entitas tepercaya: Layanan Alibaba Cloud
Nama entitas tepercaya: Platform for AI (pai.aliyun.cs.com)
Berikan izin kepada peran RAM instans yang telah dibuat.
Klik Add Authorization untuk memberikan kebijakan sistem atau kebijakan kustom kepada peran RAM tersebut, sehingga memberikan izin akses atau operasi terhadap sumber daya terkait. Misalnya, Anda dapat menambahkan kebijakan AliyunOSSFullAccess. Untuk informasi selengkapnya, lihat dokumen referensi.
CatatanJika Anda menggunakan RAM user untuk mengoperasikan instans DSW, hubungi akun root untuk membuat dan memberikan kebijakan akses berikut kepada RAM user Anda, sehingga memberikan izin untuk menggunakan peran RAM instans.
Kebijakan akses yang harus dibuat ditunjukkan dalam kode berikut. Ganti
${RoleName}dengan nama peran RAM instans DSW.{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ram:PassRole", "Resource": "acs:ram::*:role/${RoleName}" } ] }
Skenario 3: Jangan mengaitkan peran RAM
Jika instans Anda diatur sebagai publik di ruang kerja, kami menyarankan agar tidak mengaitkan instans tersebut dengan peran RAM untuk mencegah kebocoran izin. Saat membuat instans baru atau mengubah konfigurasinya, atur Instance RAM Role di bagian Advanced Information menjadi Does Not Associate Role.
Perbarui konfigurasi peran RAM instans yang sudah ada
Buka halaman Data Science Workshop (DSW).
Login ke Konsol PAI, lalu pilih wilayah tujuan dan ruang kerja.
Pada panel navigasi sebelah kiri, pilih Model Training > Data Science Workshop (DSW) untuk membuka halaman DSW.
Klik Change Settings di sebelah kanan instans DSW.
Konfigurasikan peran RAM instans di bagian Roles and Permissions.
PentingJika Peran RAM Instans diubah dari Default Roles of PAI atau Custom Roles ke Does Not Associate Role, atau sebaliknya—dari Does Not Associate Role ke Default Roles of PAI atau Custom Roles—dan instans sedang berjalan, operasi pembaruan akan langsung memulai ulang instans tersebut. Pastikan Anda segera menyimpan data instans.
Setelah konfigurasi selesai, klik OK.
Langkah 2: Dapatkan kredensial akses sementara berdasarkan peran RAM instans
Setelah instans berhasil dikaitkan dengan peran RAM, Anda dapat memperoleh dan menggunakan kredensial sementara di dalam instans untuk mengakses layanan cloud dengan beberapa cara.
Metode 1: Dapatkan kredensial menggunakan tool Credentials (disarankan)
Kami menyarankan menggunakan tool Credentials yang disediakan oleh SDK Alibaba Cloud untuk berbagai bahasa. Tool ini secara otomatis menangani pengambilan dan pembaruan kredensial, yang merupakan praktik terbaik untuk mengakses layanan cloud.
Instal dependensi (contoh Python)
pip install alibabacloud_credentialsContoh penggunaan tool Credentials:
from alibabacloud_credentials.client import Client as CredClient from alibabacloud_credentials.models import Config as CredConfig credentialsConfig = CredConfig( type='credentials_uri' # Jika Anda belum mengonfigurasi metode akses "default credential chain" lainnya, Anda tidak perlu menentukannya secara eksplisit. SDK Credentials akan memperoleh kredensial sementara melalui metode URI. ) credentialsClient = CredClient(credentialsConfig)
Untuk contoh SDK dalam bahasa lainnya, lihat dokumen referensi.
Metode 2: Akses langsung layanan lokal instans DSW
Di dalam instans DSW, Anda dapat menjalankan perintah berikut di Terminal untuk mengakses server yang diinjeksikan secara lokal guna memperoleh kredensial.
# Dapatkan kredensial akses otorisasi sementara untuk peran RAM instans
curl $ALIBABA_CLOUD_CREDENTIALS_URIContoh konten respons sebagai berikut:
SecurityToken: Token sementara dari peran RAM instans.
Expiration: Periode validitas kredensial akses sementara untuk peran RAM instans.
{
"Code": "Success",
"AccessKeyId": "STS.N*********7",
"AccessKeySecret": "3***************d",
"SecurityToken": "DFE32G*******",
"Expiration": "2024-05-21T10:39:29Z"
}Metode 3: Akses langsung file lokal di dalam instans
Di dalam instans DSW, Anda dapat mengakses file di jalur yang ditentukan (secara otomatis diinjeksikan dan diperbarui berkala oleh PAI) untuk memperoleh kredensial akses sementara peran RAM instans. Jalur file tersebut adalah /mnt/.alibabacloud/credentials. Isi file sebagai berikut:
{
"AccessKeyId": "STS.N*********7",
"AccessKeySecret": "3***************d",
"SecurityToken": "DFE32G*******",
"Expiration": "2024-05-21T10:39:29Z"
}Langkah 3: Akses produk cloud lain berdasarkan peran RAM instans
Contoh 1: Akses Object Storage Service (OSS) menggunakan peran RAM instans
Jalankan perintah berikut untuk menginstal tool Credentials dan SDK OSS.
# Instal tool Credentials pip install alibabacloud_credentials # Instal SDK OSS pip install oss2Gunakan kredensial sementara dari peran RAM instans untuk mengakses OSS. Tampilkan 10 objek di bucket tertentu. Untuk titik akhir OSS di wilayah berbeda, lihat dokumen referensi.
import oss2 from alibabacloud_credentials.client import Client from alibabacloud_credentials import providers from itertools import islice auth = oss2.ProviderAuth(providers.DefaultCredentialsProvider()) bucket = oss2.Bucket(auth, '<oss_endpoint>',# Ganti dengan titik akhir wilayah tempat bucket OSS Anda berada '<oss_bucket>'# Ganti dengan nama bucket OSS Anda ) for b in islice(oss2.ObjectIterator(bucket), 10): print(b.key)
Contoh 2: Akses MaxCompute menggunakan peran RAM instans
Jalankan perintah berikut untuk menginstal tool Credentials dan SDK ODPS.
# Instal tool Credentials pip install alibabacloud_credentials # Instal SDK ODPS pip install odpsGunakan kredensial sementara dari peran RAM instans untuk mengakses MaxCompute. Tampilkan daftar tabel di proyek tertentu. Untuk titik akhir MaxCompute di wilayah berbeda, lihat dokumen referensi.
from alibabacloud_credentials import providers from odps.accounts import CredentialProviderAccount from odps import ODPS if __name__ == '__main__': account = CredentialProviderAccount(providers.DefaultCredentialsProvider()) o = ODPS( account=account, project="<odps_project>", # Ganti dengan nama proyek Anda endpoint="<odps_endpoint>"# Ganti dengan titik akhir wilayah tempat proyek Anda berada ) for t in o.list_tables(): print(t)
Contoh 3: Akses PAI-DLC menggunakan peran RAM instans
Jalankan perintah berikut untuk menginstal tool Credentials, SDK OpenAPI, dan SDK DLC.
# Instal tool Credentials pip install alibabacloud_credentials # Instal SDK OpenAPI Alibaba Cloud pip install alibabacloud-tea-util alibabacloud_tea_openapi # Instal SDK PAI-DLC pip install alibabacloud_pai_dlc20201203Gunakan kredensial sementara dari peran RAM instans untuk mengakses PAI-DLC. Tampilkan daftar pekerjaan DLC di ruang kerja tertentu.
from alibabacloud_credentials.client import Client as CredClient from alibabacloud_tea_openapi.models import Config from alibabacloud_pai_dlc20201203.client import Client as pai_dlc20201203Client from alibabacloud_pai_dlc20201203 import models as pai_dlc_20201203_models from alibabacloud_tea_util.models import RuntimeOptions # Inisialisasi klien DLC menggunakan tool Credentials credentialsClient = CredClient() config = Config(credential=credentialsClient) config.endpoint = '<dlc_endpoint>' # Ganti dengan titik akhir wilayah Anda client = pai_dlc20201203Client(config) # Inisialisasi permintaan dan panggil API ListJobs list_jobs_request = pai_dlc_20201203_models.ListJobsRequest() list_jobs_request.workspace_id = '<workspace_id>' # Ganti dengan ID ruang kerja Anda runtime_options = RuntimeOptions() headers = {} resp = client.list_jobs_with_options(list_jobs_request, headers, runtime_options) jobs = resp.to_map()['body']['Jobs'] print(jobs[0])
FAQ
T: Bagaimana cara mengatasi PassRoleFailedError saat membuat instans dengan peran kustom?
Login ke Konsol Resource Access Management (RAM) dan pastikan peran tersebut ada.
Jika peran tidak ada, ubah peran RAM instans menjadi peran yang tersedia.
Jika peran ada, hubungi akun root untuk memberikan izin yang diperlukan kepada RAM user Anda. Kebijakan aksesnya sebagai berikut. Ganti ${RoleName} dengan nama peran RAM tersebut.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ram:PassRole", "Resource": "acs:ram::*:role/${RoleName}" } ] }
T: Bagaimana cara mengatasi AssumeRoleFailedError saat membuat instans dengan peran kustom?
Galat ini biasanya terjadi karena kebijakan kepercayaan belum dikonfigurasi untuk peran Anda. Untuk mengatasinya, ikuti langkah-langkah berikut:
Login ke Konsol RAM sebagai administrator RAM.
Pada panel navigasi sebelah kiri, pilih Identity Management > Roles.
Pada halaman Roles, klik nama peran RAM target.
Pada tab Trust Policy, klik Edit Trust Policy.
Ubah kebijakan kepercayaan tersebut, lalu klik OK.
Sebagai contoh, kebijakan kepercayaan awal untuk peran tersebut adalah:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::aaa:root" ], "Service": [ "xxx.aliyuncs.com" ] } } ], "Version": "1" }Perbarui kebijakan tersebut sebagai berikut:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::aaa:root" ], "Service": [ "xxx.aliyuncs.com", "pai.aliyuncs.com" ] } } ], "Version": "1" }