DLC işleriniz diğer cloud kaynaklarına eriştiğinde kimlik doğrulama için bir AccessKey çifti yapılandırmanız gerekir. Bir RAM rolü ilişkilendirerek DLC işinizin Security Token Service (STS) üzerinden geçici kimlik bilgilerini kullanmasını sağlayabilir, uzun vadeli AccessKey çiftlerine olan ihtiyacı ortadan kaldırabilir ve anahtar sızdırma riskini azaltabilirsiniz. Bu konuda RAM rolü oluşturma, DLC'ye izin verme ve RAM rolünü kullanarak geçici erişim kimlik bilgilerini alma adımları açıklanmaktadır.
Avantajlar
RAM rolü, cloud hizmetlerinin hizmetler arası erişimi yönetmek için üstlenebileceği güvenilir bir varlıktır. Kimlik doğrulama ve erişim kontrolü için RAM rolü kullanmanın aşağıdaki avantajları vardır:
Güvenlik: Geçici STS kimlik bilgileri uzun vadeli AccessKey çiftlerinin yerine geçer ve anahtar sızdırma riskini azaltır.
Kontrol ve kolaylık: RAM rolünün izin ilkesini değiştirerek geliştiricilerin cloud kaynaklarına erişimini hassas şekilde kontrol edebilirsiniz.
Sınırlamalar
Tek bir DLC işine yalnızca bir RAM rolü ilişkilendirebilirsiniz.
Yapılandırma yöntemleri
Bir DLC işi oluştururken bir RAM rolü yapılandırın ve geçici STS kimlik bilgilerini alın.
DLC için RAM rolü yapılandırma
PAI default role
default role of PAI, AliyunPAIDLCDefaultRole hizmet rolüne dayanır. Yalnızca MaxCompute ve Object Storage Service (OSS) kaynaklarına erişmek için ayrıntılı izinlere sahiptir. Bu rolden verilen geçici kimlik bilgilerinin MaxCompute tablolarına erişirken sahip olduğu yetkiler Alibaba Cloud account ile aynıdır. OSS'e erişirken ise yalnızca mevcut workspace için yapılandırılmış varsayılan OSS paketine erişebilir.
PAI'nin varsayılan rolünü verdikten sonra aşırı izin vermeden veya ek bir RAM rolü oluşturmadan iş içinde temel geliştirme kaynaklarına erişmek için geçici kimlik bilgileri alabilirsiniz.
-
Kullanım senaryoları
PAI'nin varsayılan rolü verildiğinde aşağıdaki senaryolarda bir AccessKey çifti yapılandırmanıza gerek kalmaz:
İş sahibinin yürütme izinlerine sahip olduğu bir MaxCompute projesine PyODPS SDK kullanarak iş gönderme.
OSS SDK kullanarak mevcut workspace için yapılandırılan varsayılan OSS paketi içindeki verilere erişme.
-
Yapılandırma yöntemi
Bir DLC işi oluştururken, Roles and Permissions bölümünde Instance RAM Role olarak Default Roles of PAI seçeneğini işaretleyin. Roles and Permissions bölümünde Visibility değerini Visible within the workspace olarak ayarlayın ve Instance RAM Role değerini default role of PAI olarak belirleyin.
RAM rolünü yapılandırdıktan sonra ilişkili RAM rolünü kullanarak geçici bir erişim kimlik bilgisi almanız gerekir.
Custom role
default role of PAI üzerinden alınan geçici kimlik bilgilerinin izinleri ihtiyaçlarınızı karşılamıyorsa bir RAM rolü oluşturup izin ilkesini özelleştirebilirsiniz. Aşağıdaki adımları izleyin:
-
RAM konsolunda oturum açın ve bir RAM rolü oluşturun.
Aşağıdaki temel parametreleri yapılandırın:
Principal Type: Cloud Services seçeneğini işaretleyin.
Principal Name: PAI seçeneğini işaretleyin.
-
Oluşturulan RAM rolüne izin verin.
Rolün izinlerini tanımlamak için RAM rolüne bir sistem veya özel ilke ekleyin. Örneğin RAM rolüne OSS üzerinde salt okunur erişim sağlamak için AliyunOSSReadOnlyAccess ilkesini atayın.
Bir RAM kullanıcısıysanız RAM kullanıcınızın bu RAM rolünü kullanma izinlerini vermesi için Alibaba Cloud hesap yöneticinize başvurun. Daha fazla bilgi için bkz. RAM kullanıcı izinlerini yönetme. Aşağıdaki kod özel bir izin ilkesi örneğini göstermektedir:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ram:PassRole", "Resource": "acs:ram::*:role/${RoleName}" } ] }${RoleName} ifadesini DLC işiyle ilişkilendirilen RAM rolünün adıyla değiştirin.
-
DLC işini gönderin ve RAM rolünü ilişkilendirin. Roles and Permissions bölümünde aşağıdaki temel parametreleri yapılandırın. Diğer parametreler hakkında bilgi için bkz. Eğitim işi oluşturma.
Parameter
Description
Instance RAM Role
Custom Role seçeneğini işaretleyin.
RAM Role
Önceki adımlarda oluşturduğunuz RAM rolünü seçin. Geçici kimlik bilgisi cloud hizmetlerine erişirken bu özel rolün izinlerini devralır.
RAM rolünü yapılandırdıktan sonra ilişkili RAM rolünü kullanarak geçici bir erişim kimlik bilgisi almanız gerekir.
No associated role
Verilere erişmek için bir AccessKey çifti kullanmanız gerekmiyorsa rol ilişkilendirmemeniz önerilir. Bir DLC işi oluştururken, Roles and Permissions bölümünde Instance RAM Role olarak Does Not Associate Role seçeneğini işaretleyin. Roles and Permissions bölümünde Visibility değerini Visible to creator only olarak ayarlayın ve Instance RAM Role değerini Do not associate role olarak belirleyin.
Geçici bir erişim kimlik bilgisi alma
Bir DLC işine PAI'nin varsayılan rolünü veya özel bir rol atadıysanız geçici kimlik bilgilerini aşağıdaki yollardan biriyle alabilirsiniz:
Use the credentials tool
Alibaba Cloud Credentials aracı, iş oluşturulurken otomatik olarak enjekte edilen yerel bir hizmeti çağırarak STS'den geçici kimlik bilgilerini alır. Kimlik bilgileri düzenli aralıklarla otomatik olarak yenilenir.
Bir DLC işi oluştururken aşağıdaki temel yapılandırmaları tamamlayın:
-
Alibaba Cloud Credentials aracını yükleyin.
Third-party Library Settings bölümünde Third-party Libraries seçeneğini işaretleyin ve Alibaba Cloud Credentials aracını yüklemek için metin kutusuna alibabacloud_credentials yazın.
NotKitaplık görüntüde önceden yüklüyse bu adımı atlayabilirsiniz.
-
Bir komut dosyası dosyası yapılandırın.
Aşağıdaki kod bir Python komut dosyası örneği sunar. Diğer SDK dillerindeki daha fazla örnek için bkz. Alibaba Cloud OpenAPI'ye erişmek için erişim kimlik bilgilerini kullanmaya ilişkin en iyi uygulamalar. Komut dosyası dosyasını DLC ortamına yüklemek için Source Code Repositories veya Mount Configuration seçeneğini kullanabilirsiniz.
from alibabacloud_credentials.client import Client as CredClient from alibabacloud_credentials.models import Config as CredConfig credentialsConfig = CredConfig( type='credentials_uri' ) credentialsClient = CredClient(credentialsConfig)
Access the local service
Bir DLC işi oluştururken otomatik olarak enjekte edilen yerel hizmetten geçici kimlik bilgilerini almak için Startup Command alanında aşağıdaki komutu çalıştırın.
# Obtain a temporary access credential for the instance RAM role.
curl $ALIBABA_CLOUD_CREDENTIALS_URI
Aşağıdaki örnek bir çıktıyı göstermektedir:
{
"Code": "Success",
"AccessKeyId": "STS.N*********7",
"AccessKeySecret": "3***************d",
"SecurityToken": "DFE32G*******"
"Expiration": "2024-05-21T10:39:29Z"
}
Alan açıklamaları:
SecurityToken: RAM rolünün geçici güvenlik belirteci.
Expiration: Geçici kimlik bilgilerinin sona erme zamanı.
Access a local file
DLC konteynerinde belirtilen yoldaki dosyayı okuyarak RAM rolü için geçici kimlik bilgilerini alın. Bu dosya PAI tarafından otomatik olarak enjekte edilir ve periyodik olarak yenilenir. Dosya yolu /mnt/.alibabacloud/credentials şeklindedir. Aşağıdaki kod dosya içeriğini göstermektedir:
{
"AccessKeyId": "STS.N*********7",
"AccessKeySecret": "3***************d",
"SecurityToken": "DFE32G*******"
"Expiration": "2024-05-21T10:39:29Z"
}
Örnekler
Access ODPS
Bir DLC işi oluştururken aşağıdaki temel yapılandırmaları tamamlayın:
-
Gerekli kitaplıkları yükleyin.
Third-party Library Settings bölümünde Alibaba Cloud Credentials aracını ve ODPS SDK'yı yüklemek için Third-party Libraries değerini yapılandırın.
alibabacloud_credentials pyodpsNotBu kitaplıklar görüntüde önceden yüklüyse bu adımı atlayabilirsiniz.
-
Bir komut dosyası dosyası yapılandırın.
Aşağıdaki kod bir Python komut dosyası örneği sunar. Komut dosyası dosyasını DLC ortamına yüklemek ve
/mnt/data/gibi bir Mount Path yapılandırmak için Source Code Repositories veya Mount Configurations seçeneğini kullanabilirsiniz.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}", # Replace with your project name. endpoint="{odps_endpoint}" # Replace with the endpoint of the region where your project is located. ) for t in o.list_tables(): print(t) -
Başlatma komutunu yapılandırın.
Startup Command değerini komut dosyasını çalıştıran komut olarak ayarlayın. Örneğin
python /mnt/data/xx.py. -
Rol bilgilerini yapılandırın.
Instance RAM Role için Default Roles of PAI seçeneğini işaretleyin.
Access OSS
Bir DLC işi oluştururken aşağıdaki temel yapılandırmaları tamamlayın:
-
Gerekli kitaplıkları yükleyin.
Third-party Library Settings bölümünde Alibaba Cloud Credentials aracını ve OSS SDK'yı yüklemek için Third-party Libraries değerini yapılandırın.
alibabacloud_credentials oss2NotBu kitaplıklar görüntüde önceden yüklüyse bu adımı atlayabilirsiniz.
-
Bir komut dosyası dosyası yapılandırın.
Aşağıdaki kod bir Python komut dosyası örneği sunar. Komut dosyası dosyasını DLC ortamına yüklemek ve
/mnt/data/gibi bir Mount Path yapılandırmak için Source Code Repositories veya Mount Configurations seçeneğini kullanabilirsiniz.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}', # Replace with the endpoint of the region where your OSS bucket is located. '{oss_bucket}' # Replace with the name of your OSS bucket. ) for b in islice(oss2.ObjectIterator(bucket), 10): print(b.key) -
Başlatma komutunu yapılandırın.
Startup Command değerini komut dosyasını çalıştıran komut olarak ayarlayın. Örneğin
python /mnt/data/xx.py. -
Rol bilgilerini yapılandırın.
Instance RAM Role için Default Roles of PAI seçeneğini işaretleyin.
SSS
Özel rol seçerken hata oluşması
-
Hata mesajı: check permission for ram role failed veya check permission for RAM user failed.
Rolün var olduğunu doğrulamak için RAM konsolunda oturum açabilirsiniz.
Rol yoksa Instance RAM Role değerini mevcut bir rolle değiştirin.
-
Rol varsa RAM kullanıcınızın bu rolü kullanma izinlerini vermesi için Alibaba Cloud hesap yöneticinize başvurun. Daha fazla bilgi için bkz. RAM kullanıcı izinlerini yönetme. Aşağıda örnek bir özel izin ilkesi verilmiştir.
${RoleName}ifadesini RAM rolünüzün adıyla değiştirin.{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ram:PassRole", "Resource": "acs:ram::*:role/${RoleName}" } ] }
-
Hata mesajı: Failed to assume role for user.
Bu hata genellikle rolünüz için bir güven ilkesi yapılandırılmadığında ortaya çıkar. Aşağıdaki adımları izleyerek bir güven ilkesi ekleyin:
Bir RAM yöneticisi olarak RAM konsolunda oturum açın.
Sol gezinme bölmesinde seçeneklerini tıklayın.
Roles sayfasında hedef RAM rolünün adını tıklayın.
Trust Policy sekmesinde Edit Trust Policy seçeneğini tıklayın.
-
Düzenleyicide güven ilkesini değiştirin ve ardından OK seçeneğini tıklayın.
Rolün orijinal güven ilkesinin şu olduğunu varsayalım:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::aaa:root" ], "Service": [ "xxx.aliyuncs.com" ] } } ], "Version": "1" }Yeni ilke içeriği aşağıdaki gibidir:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::aaa:root" ], "Service": [ "xxx.aliyuncs.com", "pai.aliyuncs.com" ] } } ], "Version": "1" }