Hesaplar arası Serverless App Engine (SAE) kaynaklarına erişimi sağlamak için bir Alibaba Cloud hesabına güvenen bir RAM rolü oluşturun.
Kullanım senaryoları
A Şirketi SAE hizmetini etkinleştirmiş ve bazı iş operasyonlarını B Şirketine devretmek istemektedir:
A Şirketi iş sistemlerine odaklanmak ve yalnızca SAE kaynaklarının sahibi olarak kalmak ister; uygulama dağıtımı, yönetimi, otomatik ölçeklendirme, tek tıkla başlatma/durdurma ve izleme gibi operasyonları B Şirketine devreder.
A Şirketi, B Şirketindeki çalışanların işe alımı veya ayrılışı sırasında izinleri yönetmek zorunda kalmaz. B Şirketi, kendi RAM kullanıcılarının A Şirketinin kaynaklarına erişimini, çalışanları veya uygulamaları için ayrıntılı izinler dahil olmak üzere kendi yönetir.
İşbirliği sona ererse, A Şirketi B Şirketinin erişimini istediği zaman iptal edebilir.
1. Adım: A Şirketi bir RAM rolü oluşturur
A Şirketi ve B Şirketinin her birinin bir Alibaba Cloud hesabının olduğunu varsayalım: Hesap A ve Hesap B.
Alibaba Cloud hesabı A'nın kimliği
1234************ve hesap takma adıcompany-a'dır.Alibaba Cloud hesabı B'nin kimliği
2345************ve hesap takma adıcompany-b'dır.
Alibaba Cloud hesabı A'yı kullanarak RAM konsolunda oturum açın.
Sol gezinme bölmesinde seçeneğini belirleyin.
Roles sayfasında Create Role seçeneğine tıklayın.
-
Create Role sayfasında rolü yapılandırın.
Trusted Entity Type değerini Alibaba Cloud Account olarak ayarlayın. Select Trusted Alibaba Cloud Account için Other Alibaba Cloud Account seçeneğini belirleyin ve Alibaba Cloud hesabı B'nin kimliğini girin. Ardından OK seçeneğine tıklayın.
-
Role Name alanına
sae-admingirin ve ardından OK seçeneğine tıklayın.ÖnemliBu RAM rolünü yalnızca belirli RAM kullanıcılarının üstlenmesine izin vermek için aşağıdaki yöntemlerden birini kullanın:
RAM rolünün güven ilkesini değiştirin. Daha fazla bilgi için bkz. Örnek 1: Bir RAM rolünün güvenilir varlığını bir Alibaba Cloud hesabı ile değiştirme.
Bir RAM kullanıcısının hangi rolleri üstlenebileceğini belirten izin ilkesini değiştirin. Daha fazla bilgi için bkz. Bir RAM kullanıcısının üstlenebileceği RAM rolünü nasıl belirtirim?.
-
Rolün Basic Information sayfasında RAM rolü adı, oluşturma zamanı ve ARN gibi ayrıntıları görüntüleyebilirsiniz.
RAM rolü adı: sae-admin.
ARN:
acs:ram::1234************:role/sae-admin.-
Güven ilkesi:
NotAşağıdaki ilke, Alibaba Cloud hesabı B'deki RAM kullanıcılarının bu RAM rolünü üstlenmesine izin verir.
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::2345************:root" ] } } ], "Version": "1" }
2. Adım: A Şirketi RAM rolüne izin verir
From the Roles page
Bir RAM yöneticisi olarak RAM konsolunda oturum açın.
Sol gezinme bölmesinde seçeneğini belirleyin.
-
Roles sayfasında RAM rolünü bulun ve Actions sütunundaki Grant Permission seçeneğine tıklayın.
Aynı anda birden çok RAM rolüne izin vermek için RAM rollerini seçin ve listenin altındaki Grant Permission seçeneğine tıklayın.
-
Grant Permission panelinde RAM rolüne izin verin.
-
Yetkilendirme kapsamını seçin.
Alibaba Cloud Account: İzinler, mevcut Alibaba Cloud hesabındaki tüm kaynaklarda etkili olur.
-
Resource Group: İzinler yalnızca belirtilen kaynak grubundaki kaynaklarda etkili olur.
NotBir kaynak grubuna verilen izinler, yalnızca cloud hizmeti ve kaynak türü kaynak gruplarını destekliyorsa etkili olur. Daha fazla bilgi için bkz. Kaynak Grubu ile Çalışan Hizmetler.
-
Varlıkları seçin.
Varlık, izinleri alan bir RAM rolüdür. Sistem mevcut RAM rolünü otomatik olarak seçer.
-
İzin ilkelerini seçin.
İzin ilkesi, bir dizi izni tanımlar. Birden çok ilke seçebilirsiniz.
-
Sistem ilkesi: Sistem ilkesi, Alibaba Cloud tarafından oluşturulur ve korunur. Sistem ilkelerini kullanabilirsiniz ancak bunları değiştiremezsiniz. Daha fazla bilgi için RAM ile Çalışan Hizmetler konusunun "Cloud hizmetleri ve sistem ilkeleri" bölümüne bakın.
NotSistem, AdministratorAccess ve AliyunRAMFullAccess gibi yüksek riskli sistem ilkelerini otomatik olarak tanımlar. Gerektiği durumlar haricinde yüksek riskli izinler vermeyin.
Özel ilke: Özel bir ilke oluşturup yönetirsiniz. Özel ilkeler oluşturabilir, güncelleyebilir ve silebilirsiniz. Özel bir ilke oluşturma hakkında daha fazla bilgi için bkz. Özel izin ilkesi oluşturma.
-
OK seçeneğine tıklayın.
-
close seçeneğine tıklayın.
From the Grants page
Bir RAM yöneticisi olarak RAM konsolunda oturum açın.
Sol gezinme bölmesinde seçeneğini belirleyin.
Grants sayfasında Grant Permission seçeneğine tıklayın.
-
Grant Permission panelinde RAM rolüne izin verin.
-
Yetkilendirme kapsamını seçin.
Account: İzinler, mevcut Alibaba Cloud hesabındaki tüm kaynaklarda etkili olur.
-
Resource Group: İzinler yalnızca belirtilen kaynak grubundaki kaynaklarda etkili olur.
NotBir kaynak grubuna verilen izinler, yalnızca cloud hizmeti ve kaynak türü kaynak gruplarını destekliyorsa etkili olur. Daha fazla bilgi için bkz. Kaynak Grubu ile Çalışan Hizmetler.
-
Varlıkları seçin.
Varlık, izinleri alan bir RAM rolüdür. Birden çok RAM rolü seçebilirsiniz.
-
İzin ilkelerini seçin.
İzin ilkesi, bir dizi izni tanımlar. Birden çok ilke seçebilirsiniz.
-
Sistem ilkesi: Sistem ilkesi, Alibaba Cloud tarafından oluşturulur ve korunur. Sistem ilkelerini kullanabilirsiniz ancak bunları değiştiremezsiniz. Daha fazla bilgi için RAM ile Çalışan Hizmetler konusunun "Cloud hizmetleri ve sistem ilkeleri" bölümüne bakın.
NotSistem, AdministratorAccess ve AliyunRAMFullAccess gibi yüksek riskli sistem ilkelerini otomatik olarak tanımlar. Gerektiği durumlar haricinde yüksek riskli izinler vermeyin.
Özel ilke: Özel bir ilke oluşturup yönetirsiniz. Özel ilkeler oluşturabilir, güncelleyebilir ve silebilirsiniz. Özel bir ilke oluşturma hakkında daha fazla bilgi için bkz. Özel izin ilkesi oluşturma.
-
OK seçeneğine tıklayın.
-
close seçeneğine tıklayın.
3. Adım: B Şirketi bir RAM kullanıcısı oluşturur
Alibaba Cloud hesabı B'yi kullanarak RAM konsolunda oturum açın.
Bir RAM kullanıcısı oluşturun. Ayrıntılı talimatlar için bkz. RAM kullanıcısı oluşturma.
4. Adım: B Şirketi RAM kullanıcısına izin verir
Alibaba Cloud hesabı B'yi kullanarak RAM konsolunda oturum açın.
Sol gezinme bölmesinde seçeneğini belirleyin.
-
Users sayfasında hedef RAM kullanıcısını bulun ve Actions sütunundaki Add Permissions seçeneğine tıklayın.
Aynı anda birden çok RAM kullanıcısına izin vermek için RAM kullanıcılarını seçin ve listenin altındaki Add Permissions seçeneğine tıklayın.
Policies bölümünde arama kutusuna AliyunSTSAssumeRoleAccess yazın, ilkeyi seçerek sağ taraftaki Selected listesine ekleyin ve ardından OK seçeneğine tıklayın.
Complete seçeneğine tıklayın.
5. Adım: Hesaplar arası kaynaklara erişin
Security Token Service (STS), özel bir geçerlilik süresi ve belirli izinlere sahip geçici erişim belirteçleri sağlar. Yetkili bir varlık (örneğin bir RAM kullanıcısı veya rolü) bir belirteç alabilir ve ardından Alibaba Cloud kaynaklarına aşağıdaki yollardan biriyle erişebilir:
Yöntem 1: Konsolu kullanma
B Şirketinin RAM kullanıcısı, A Şirketinin SAE kaynaklarına erişmek için konsolda oturum açabilir.
-
Alibaba Cloud hesabı B'nin RAM kullanıcısı olarak RAM konsolunda oturum açın.
Daha fazla bilgi için bkz. RAM kullanıcısı olarak Alibaba Cloud Management Console'da oturum açma.
Konsolun sağ üst köşesinde profil resminizin üzerine gelin ve Switch Role seçeneğine tıklayın.
-
Switch Role sayfasında A Şirketinin Account Alias ve Role Name bilgilerini girin ve ardından Submit seçeneğine tıklayın.
Rol değiştirdikten sonra, B Şirketinin RAM kullanıcısı A Şirketinin Serverless App Engine kaynaklarını yönetebilir.
Yöntem 2: SDK kullanma
-
Bir erişim kimlik bilgisi edinin. Bu örnekte Java SDK kullanılmaktadır.
-
Çalışma zamanı ortamınızda aşağıdaki ortam değişkenlerini ayarlayın.
Parameter
Value
ALIBABA_CLOUD_ACCESS_KEY_ID
B Şirketinin RAM kullanıcısının AccessKey ID'si
ALIBABA_CLOUD_ACCESS_KEY_SECRET
B Şirketinin RAM kullanıcısının AccessKey gizli anahtarı -
Aşağıdaki kodu çalıştırın. Daha fazla bilgi için bkz. Java SDK örneği ve AssumeRole.
package com.aliyun.sample; import com.aliyun.sts20150401.models.AssumeRoleResponse; import com.aliyun.tea.TeaException; import com.google.gson.Gson; public class Sample { /** * <b>description</b> : * <p> * Initialize the client with credentials. * </p> * * @return Client * * @throws Exception */ public static com.aliyun.sts20150401.Client createClient() throws Exception { com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client(); com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config().setCredential(credential); // For more information about endpoints, see https://api.alibabacloud.com/product/Sts. config.endpoint = "sts.cn-hangzhou.aliyuncs.com"; return new com.aliyun.sts20150401.Client(config); } public static void main(String[] args_) throws Exception { com.aliyun.sts20150401.Client client = Sample.createClient(); com.aliyun.sts20150401.models.AssumeRoleRequest assumeRoleRequest = new com.aliyun.sts20150401.models.AssumeRoleRequest(); com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); // Replace the value of RoleArn with the ARN of your role and specify a custom RoleSessionName. assumeRoleRequest.setRoleArn("acs:ram::1234************:role/sae-admin"); assumeRoleRequest.setRoleSessionName("Alice"); try { // If you copy the code to run it, print the API response. AssumeRoleResponse response = client.assumeRoleWithOptions(assumeRoleRequest, runtime); System.out.println(new Gson().toJson(response.body)); } catch (TeaException error) { // This is for demonstration only. In a production project, handle exceptions with care and do not ignore them. // Error message System.out.println(error.getMessage()); // Troubleshooting URL System.out.println(error.getData().get("Recommend")); com.aliyun.teautil.Common.assertAsString(error.message); } catch (Exception _error) { TeaException error = new TeaException(_error.getMessage(), _error); // This is for demonstration only. In a production project, handle exceptions with care and do not ignore them. // Error message System.out.println(error.getMessage()); // Troubleshooting URL System.out.println(error.getData().get("Recommend")); com.aliyun.teautil.Common.assertAsString(error.message); } } }NotSAE API işlemlerini HTTP istekleri, SDK'lar veya OpenAPI Explorer kullanarak çağırabilirsiniz. Daha fazla bilgi için bkz. API'ye genel bakış.
Beklenen çıktı:
{ "requestId": "964E0EC5-575B-4FF5-8FD0-D4BD8025****", "assumedRoleUser": { "arn": "acs:ram::*************", "assumedRoleId": "*************" }, "credentials": { "securityToken": "*************", "accessKeyId": "STS.*************", "accessKeySecret": "*************", "expiration": "2021-05-28T11:23:19Z" } }
-
-
Dönen erişim anahtar çiftini ve güvenlik belirtecini kullanarak yeni bir istemci oluşturun. Bu işlem, B Şirketinin RAM kullanıcısına Alibaba Cloud hesabı A'daki SAE kaynaklarını yönetme izni verir. Aşağıdaki örnek, SAE China (Hangzhou) bölgesindeki ad alanlarını sorgular.
-
Kodunuzun çalışma zamanı ortamında aşağıdaki ortam değişkenlerini ayarlayın.
Parameter
Value
ALIBABA_CLOUD_ACCESS_KEY_ID
Bir önceki adımdaki yanıttakicredentials.accessKeyId
ALIBABA_CLOUD_ACCESS_KEY_SECRET
Bir önceki adımdaki yanıttakicredentials.accessKeySecret
ALIBABA_CLOUD_SECURITY_TOKEN
Bir önceki adımdaki yanıttakicredentials.securityToken -
Aşağıdaki kodu çalıştırın.
package com.aliyun.sample; import com.aliyun.sae20190506.models.DescribeNamespacesResponse; import com.aliyun.tea.*; import com.google.gson.Gson; public class Sample { /** * <b>description</b> : * <p> * Initialize the client with credentials. * </p> * * @return Client * * @throws Exception */ public static com.aliyun.sae20190506.Client createClient() throws Exception { com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client(); com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config().setCredential(credential); // For more information about endpoints, see https://api.alibabacloud.com/product/sae. config.endpoint = "sae.cn-hangzhou.aliyuncs.com"; return new com.aliyun.sae20190506.Client(config); } public static void main(String[] args_) throws Exception { com.aliyun.sae20190506.Client client = Sample.createClient(); com.aliyun.sae20190506.models.DescribeNamespacesRequest describeNamespacesRequest = new com.aliyun.sae20190506.models.DescribeNamespacesRequest(); com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); java.util.Map<String, String> headers = new java.util.HashMap<>(); // Replace the following parameters based on your requirements. describeNamespacesRequest.setCurrentPage(1); describeNamespacesRequest.setPageSize(10); try { DescribeNamespacesResponse response = client .describeNamespacesWithOptions(describeNamespacesRequest, headers, runtime); System.out.println(new Gson().toJson(response.body)); } catch (TeaException error) { // This is for demonstration only. In a production project, handle exceptions with care and do not ignore them. // Error message System.out.println(error.getMessage()); // Troubleshooting URL System.out.println(error.getData().get("Recommend")); com.aliyun.teautil.Common.assertAsString(error.message); } catch (Exception _error) { TeaException error = new TeaException(_error.getMessage(), _error); // This is for demonstration only. In a production project, handle exceptions with care and do not ignore them. // Error message System.out.println(error.getMessage()); // Troubleshooting URL System.out.println(error.getData().get("Recommend")); com.aliyun.teautil.Common.assertAsString(error.message); } } }
-
Erişimi iptal etme
A Şirketi ile B Şirketi arasındaki işbirliği sona erdiğinde, A Şirketi RAM rolünden izinleri kaldırarak ve ardından rolü silerek erişimi iptal edebilir. Bu işlem, Alibaba Cloud hesabı B'deki RAM kullanıcılarının rolü üstlenerek Alibaba Cloud hesabı A'daki kaynaklara erişmesini engeller.
Bir RAM rolünü silmeden önce, ona verilen izinleri iptal etmeniz gerekir. Daha fazla bilgi için bkz. RAM rolünden izinleri iptal etme.
Alibaba Cloud hesabı A'yı kullanarak RAM konsolunda oturum açın.
Soldaki gezinme bölmesinde konumuna gidin.
Roles sayfasında silmek istediğiniz RAM rolünü bulun ve Actions sütunundaki Delete Role seçeneğine tıklayın.
-
Delete Role iletişim kutusunda RAM rolü adını girin ve Delete Role seçeneğine tıklayın.
Rol adları büyük/küçük harfe duyarlıdır. Girdiğiniz ad, rol listesinde görüntülenen adla tam olarak eşleşmelidir. Aksi takdirde, Delete Role düğmesi devre dışı kalır. Hizmet bağlantılı roller genellikle
AliyunServiceRoleForSmartServicegibi camelCase adları kullanır. Hatalardan kaçınmak için rol adını rol listesinden kopyalayın ve onay metin kutusuna yapıştırın.İlkeler RAM rolüne eklenmişse, rolü sildiğinizde bunlar otomatik olarak kaldırılır.
İlgili cloud hizmeti tarafından kullanılan bir hizmet bağlantılı rolün silinmesi başarısız olur. Önce cloud hizmeti konsoluna giderek rol üzerindeki bağımlılığı kaldırmanız ve ardından silme işlemini yeniden denemeniz gerekir. Hizmet bağlantılı roller hakkında daha fazla bilgi için bkz. Hizmet bağlantılı roller.
Silme isteğini gönderdikten sonra rolün durumu Siliniyor olarak değişir. Eşzamansız silme tamamlandığında rol, rol listesinden kaldırılır.
Bir silme görevi başarısız olursa, ayrıntıları görüntülemek için rol listesinin sağ üst köşesindeki Role Deletion Tasks seçeneğine tıklayın.