All Products
Search
Document Center

Elastic Compute Service:Peran RAM Instans

Last Updated:Apr 28, 2026

Sambungkan peran RAM instans ke instans ECS untuk memperoleh token STS guna memanggil API Alibaba Cloud lainnya tanpa mengekspos pasangan AccessKey.

Manfaat

  • Pemanggilan API yang aman: Dapatkan token STS dari ECS tanpa menyematkan pasangan AccessKey dalam kode Anda, sehingga mengurangi risiko kebocoran kredensial.

  • Pergantian identitas yang disederhanakan: Ganti identitas RAM dengan mengubah peran RAM instans, bukan dengan memodifikasi kode atau me-restart layanan.

  • Kontrol akses tingkat granular: Tetapkan peran RAM dengan kebijakan spesifik ke berbagai instans ECS untuk pengelolaan izin yang lebih terperinci.

Batasan

Anda hanya dapat menyambungkan satu peran RAM ke satu instans ECS.

Prosedur

Jika Anda menggunakan pengguna RAM atau peran RAM, berikan izin yang diperlukan terlebih dahulu kepada identitas tersebut.

Izin contoh

Kebijakan harus mencakup izin berikut:

  • Manage RAM roles: Buat peran RAM dan sambungkan kebijakan.

  • Attach or detach RAM roles: Sambungkan atau lepaskan peran RAM pada halaman detail instans.

  • Pass roles to services: Izin ram:PassRole diperlukan untuk memberikan peran kepada layanan Alibaba Cloud.

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:Describe*",
                "ecs:List*",
                "ecs:AttachInstanceRamRole",
                "ecs:DetachInstanceRAMRole"
            ],
            "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "ram:Describe*",              
            "ram:List*",
            "ram:Get*",
            "ram:CreateRole", 
            "ram:CreatePolicy", 
            "ram:AttachPolicyToRole"
          ],
          "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ram:PassRole",
            "Resource": "*"
        }
    ]
}

Buat peran RAM dan sambungkan ke instans ECS

Console

  1. Masuk ke RAM console untuk membuat peran RAM dan menyambungkan kebijakan.

    1. Buat peran RAM untuk layanan Alibaba Cloud tepercaya.

      Pilih Identities > Roles, klik Create Role, lalu ikuti petunjuk di layar. Perhatikan parameter berikut. Lihat Buat peran RAM untuk layanan Alibaba Cloud tepercaya:

      • Cloud Service: Pilih Cloud Service.

      • Principal Name, pilih ECS.

    2. Berikan izin kepada peran RAM yang telah dibuat.

      Sambungkan kebijakan sistem atau kebijakan kustom ke peran RAM tersebut. Misalnya, sambungkan kebijakan sistem AliyunOSSReadOnlyAccess.

      Untuk membuat kebijakan kustom, lihat Buat kebijakan kustom.
  2. Sambungkan peran RAM ke instans ECS.

    1. Buka ECS console - Instances. Di pojok kiri atas, pilih wilayah dan kelompok sumber daya untuk sumber daya target.

    2. Temukan instans ECS target, lalu pilih icon > Instance Settings > Attach/Detach RAM Role.

    3. Pada kotak dialog, pilih peran RAM instans yang telah Anda buat, lalu klik OK.

API

  1. Buat peran RAM dan sambungkan kebijakan.

    1. Panggil operasi CreateRole untuk membuat peran RAM.

      Atur AssumeRolePolicyDocument ke kebijakan kepercayaan berikut:

      {
           "Statement": [
             {
                 "Action": "sts:AssumeRole",
                 "Effect": "Allow",
                 "Principal": {
                   "Service": [
                     "ecs.aliyuncs.com"
                   ]
                 }
             }
           ],
           "Version": "1"
       }
    2. (Opsional) Panggil operasi CreatePolicy untuk membuat kebijakan akses.

      Lewati langkah ini jika Anda sudah memiliki kebijakan akses yang sesuai.

      Atur PolicyDocument sebagai berikut:

      {
           "Statement": [
               {
               "Action": [
                   "oss:Get*",
                   "oss:List*"
               ],
               "Effect": "Allow",
               "Resource": "*"
               }
           ],
           "Version": "1"
       }
    3. Panggil operasi AttachPolicyToRole untuk menyambungkan kebijakan ke peran RAM.

  2. Panggil operasi AttachInstanceRamRole untuk menyambungkan peran RAM ke instans ECS.

Dapatkan kredensial sementara

Dapatkan kredensial sementara dari dalam instans ECS dengan mengakses layanan metadata. Masa berlaku kredensial dikelola secara otomatis. Lihat Metadata instans.

Gunakan tool Credentials

Tool Credentials membungkus ECS IMDS untuk mendapatkan dan memperbarui token STS secara berkala.

Python
  1. Instal tool Credentials.

    Mode penguatan keamanan memerlukan alibabacloud_credentials versi 0.3.6 atau lebih baru.
    pip install alibabacloud_credentials
  2. Konfigurasikan peran RAM instans ECS sebagai kredensial akses.

    from alibabacloud_credentials.client import Client as CredClient
    from alibabacloud_credentials.models import Config as CredConfig
    
    credentialsConfig = CredConfig(
    	type='ecs_ram_role',
    	# Opsional. Nama peran RAM instans. Jika Anda tidak menentukan parameter ini, nama akan diambil secara otomatis. Kami menyarankan agar Anda menentukan parameter ini untuk mengurangi permintaan. Anda juga dapat mengatur nama peran menggunakan variabel lingkungan ALIBABA_CLOUD_ECS_METADATA.
    	role_name='<role_name>',
    	# Opsional. Nilai default adalah false. Jika Anda mengatur nilai ini menjadi true, mode penguatan keamanan diberlakukan. Jika Anda mengatur nilai ini menjadi false, sistem pertama-tama mencoba mengambil kredensial dalam mode penguatan keamanan. Jika gagal, sistem mencoba lagi dalam mode normal (IMDSv1).
    	disable_imds_v1=False,
    )
    credentialsClient = CredClient(credentialsConfig)
    

    Lihat Metode 5: Peran RAM Instans ECS.

Java

  1. Tambahkan dependensi credentials.

    Mode penguatan keamanan memerlukan credentials-java versi 0.3.10 atau lebih baru.
    <!-- https://mvnrepository.com/artifact/com.aliyun/credentials-java -->
    <dependency>
       <groupId>com.aliyun</groupId>
       <artifactId>credentials-java</artifactId>
       <version>0.3.10</version>
    </dependency>
  2. Konfigurasikan peran RAM instans ECS sebagai kredensial akses.

    import com.aliyun.credentials.Client;
    import com.aliyun.credentials.models.Config;
    
    public class DemoTest {
        public static void main(String[] args) throws Exception {
            Config credentialConfig = new Config();
            credentialConfig.setType("ecs_ram_role");
            // Opsional. Nama peran RAM instans. Jika Anda tidak menentukan parameter ini, nama akan diambil secara otomatis. Kami menyarankan agar Anda menentukan parameter ini untuk mengurangi permintaan. Anda juga dapat mengatur nama peran menggunakan variabel lingkungan ALIBABA_CLOUD_ECS_METADATA.
            credentialConfig.setRoleName("<RoleName>");
            // Opsional. Nilai default adalah false. Jika Anda mengatur nilai ini menjadi true, mode penguatan keamanan diberlakukan. Jika Anda mengatur nilai ini menjadi false, sistem pertama-tama mencoba mengambil kredensial dalam mode penguatan keamanan. Jika gagal, sistem mencoba lagi dalam mode normal (IMDSv1).
            credentialConfig.setDisableIMDSv1(true);
            Client credentialClient = new Client(credentialConfig);
        }
    }

    Lihat Metode 5: Peran RAM instans ECS.

Go

  1. Instal tool Credentials.

    Mode penguatan keamanan memerlukan credentials-go versi 1.3.10 atau lebih baru.
    • Gunakan go get untuk menginstal:

      go get -u github.com/aliyun/credentials-go
    • Jika Anda menggunakan dep untuk mengelola dependensi:

      dep ensure -add github.com/aliyun/credentials-go
  2. Konfigurasikan peran RAM instans ECS sebagai kredensial akses.

    package main
    
    import (
    	"fmt"
    	"github.com/aliyun/credentials-go/credentials"
    )
    
    func _main(args []*string) {
    	credentialsConfig := new(credentials.Config).
    		SetType("ecs_ram_role").
    		// Opsional. Nama peran RAM instans. Jika Anda tidak menentukan parameter ini, nama akan diambil secara otomatis. Kami menyarankan agar Anda menentukan parameter ini untuk mengurangi permintaan. Anda juga dapat mengatur nama peran menggunakan variabel lingkungan ALIBABA_CLOUD_ECS_METADATA.
    		SetRoleName("<RoleName>").
    		// Opsional. Nilai default adalah false. Jika Anda mengatur nilai ini menjadi true, mode penguatan keamanan diberlakukan. Jika Anda mengatur nilai ini menjadi false, sistem pertama-tama mencoba mengambil kredensial dalam mode penguatan keamanan. Jika gagal, sistem mencoba lagi dalam mode normal (IMDSv1).
    		SetDisableIMDSv1(true)
    	credentialClient, err := credentials.NewCredential(credentialsConfig)
    	if err != nil {
    		panic(err)
    	}
    }

    Lihat Metode 5: Menggunakan peran RAM instans ECS.

Node.js

  1. Instal tool Credentials.

    Mode penguatan keamanan memerlukan credentials versi 2.3.1 atau lebih baru.
    npm install @alicloud/credentials
  2. Konfigurasikan peran RAM instans ECS sebagai kredensial akses.

    const Credential = require('@alicloud/credentials');
    
    const credentialsConfig = new Credential.Config({
      type: 'ecs_ram_role',
      // Opsional. Nama peran RAM instans. Jika Anda tidak menentukan parameter ini, nama akan diambil secara otomatis. Kami menyarankan agar Anda menentukan parameter ini untuk mengurangi permintaan. Anda juga dapat mengatur nama peran menggunakan variabel lingkungan ALIBABA_CLOUD_ECS_METADATA.
      roleName: '<RoleName>',
      // Opsional. Nilai default adalah false. Jika Anda mengatur nilai ini menjadi true, mode penguatan keamanan diberlakukan. Jika Anda mengatur nilai ini menjadi false, sistem pertama-tama mencoba mengambil kredensial dalam mode penguatan keamanan. Jika gagal, sistem mencoba lagi dalam mode normal (IMDSv1).
      disableIMDSv1: true,
    });
    const cred = new Credential.default(credentialsConfig);
    

    Lihat Metode 5: Menggunakan peran RAM instans ECS.

.NET

  1. Instal tool Credentials.

    Mode penguatan keamanan memerlukan credentials versi 1.4.2 atau lebih baru.
    dotnet add package Aliyun.Credentials
  2. Konfigurasikan peran RAM instans ECS sebagai kredensial akses.

    using Aliyun.Credentials.Models;
    
    namespace credentials_demo
    {
        class Program
        {
            static void Main(string[] args)
            {
                var config = new Config()
                {
                    Type = "ecs_ram_role",
                  	// Opsional. Nama peran RAM instans. Jika Anda tidak menentukan parameter ini, nama akan diambil secara otomatis. Kami menyarankan agar Anda menentukan parameter ini untuk mengurangi permintaan. Anda juga dapat mengatur nama peran menggunakan variabel lingkungan ALIBABA_CLOUD_ECS_METADATA.
                    RoleName = "<RoleName>",
                    // Opsional. Nilai default adalah false. Jika Anda mengatur nilai ini menjadi true, mode penguatan keamanan diberlakukan. Jika Anda mengatur nilai ini menjadi false, sistem pertama-tama mencoba mengambil kredensial dalam mode penguatan keamanan. Jika gagal, sistem mencoba lagi dalam mode normal (IMDSv1).
                    DisableIMDSv1 = true
                }
            }
        }
    }

    Lihat Metode 5: Gunakan peran RAM instans ECS.

PHP

  1. Instal Credentials tool.

    Mode penguatan keamanan memerlukan credentials versi 1.2.0 atau lebih baru.
    composer require alibabacloud/credentials
  2. Konfigurasikan peran RAM instans ECS sebagai kredensial akses.

    <?php
    
    use AlibabaCloud\Credentials\Credential;
    use AlibabaCloud\Credentials\Credential\Config;
    
    $credConfig = new Config([
        'type' => 'ecs_ram_role',
        // Opsional. Nama peran RAM instans. Jika Anda tidak menentukan parameter ini, nama akan diambil secara otomatis. Kami menyarankan agar Anda menentukan parameter ini untuk mengurangi permintaan. Anda juga dapat mengatur nama peran menggunakan variabel lingkungan ALIBABA_CLOUD_ECS_METADATA.
        'roleName' => '<RoleName>',
        // Opsional. Nilai default adalah false. Jika Anda mengatur nilai ini menjadi true, mode penguatan keamanan diberlakukan. Jika Anda mengatur nilai ini menjadi false, sistem pertama-tama mencoba mengambil kredensial dalam mode penguatan keamanan. Jika gagal, sistem mencoba lagi dalam mode normal (IMDSv1).
        'disableIMDSv1' => true,
    ]);

    Lihat Metode 5: Gunakan peran RAM instans ECS.

Gunakan perintah shell

Ambil kredensial sementara melalui titik akhir HTTP layanan metadata.

Mode penguatan keamanan

  • Instans Linux

    # Dapatkan token akses server metadata untuk autentikasi.
    TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:<validity_period_of_the_metadata_server_access_token>"` 
    # Dapatkan kredensial akses sementara peran RAM instans.
    curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/meta-data/ram/security-credentials/<instance_RAM_role_name>
  • Instans Windows (PowerShell)

    # Dapatkan token akses server metadata untuk autentikasi.
    $token = Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "<validity_period_of_the_metadata_server_access_token>"} -Method PUT -Uri http://100.100.100.200/latest/api/token
    # Dapatkan kredensial akses sementara peran RAM instans.
    Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token" = $token} -Method GET -Uri http://100.100.100.200/latest/meta-data/ram/security-credentials/<instance_RAM_role_name>

<validity_period_of_the_metadata_server_access_token>: Periode validitas token akses server metadata. Token harus diperoleh sebelum mengambil kredensial sementara. Setelah kedaluwarsa, peroleh token baru.

Nilai yang valid: 1 hingga 21600. Satuan: detik. Lihat Metadata instans.

<instance_RAM_role_name>: Ganti ini dengan nama peran RAM instans Anda. Contohnya, EcsRamRole.

Catatan

Jika Anda menggunakan Cloud Assistant untuk menjalankan perintah ini, Agen Asisten Cloud harus memenuhi persyaratan versi minimum berikut:

Platform

Versi minimum Agen Asisten Cloud

windows

2.1.3.857

linux

2.2.3.857

linux arm

2.4.3.857

freebsd

2.3.3.857

Mode normal

  • Instans Linux

    curl http://100.100.100.200/latest/meta-data/ram/security-credentials/<instance_RAM_role_name>
  • Instans Windows (PowerShell)

    Invoke-RestMethod http://100.100.100.200/latest/meta-data/ram/security-credentials/<instance_RAM_role_name>

    Ganti <instance_RAM_role_name> dengan nama peran RAM instans Anda. Contohnya, EcsRamRoleDocumentTesting.

Contoh respons:

  • Token akses sementara terdiri dari AccessKeyId, AccessKeySecret, dan SecurityToken.

  • Expiration: Waktu kedaluwarsa kredensial sementara.

    {
       "AccessKeyId" : "STS.*******6YSE",
       "AccessKeySecret" : "aj******jDU",
       "Expiration" : "2017-11-01T05:20:01Z", 
       "SecurityToken" : "CAISng********",
       "LastUpdated" : "2023-07-18T14:17:28Z",
       "Code" : "Success"
    }

Gunakan CLI

CLI membungkus ECS IMDS untuk mendapatkan dan memperbarui token STS secara otomatis.

Mode penguatan keamanan memerlukan CLI versi 3.0.248 atau lebih baru.
  1. Instal CLI.

  2. Konfigurasikan kredensial identitas.

    Konfigurasikan informasi kredensial. Ganti <ProfileName> dengan nama konfigurasi Anda.

    aliyun configure --profile <ProfileName> --mode EcsRamRole

    Ikuti petunjuk untuk memasukkan informasi yang diperlukan. Lihat Konfigurasi kredensial.

  3. Panggil operasi API.

    Contohnya, kueri daftar instans ECS:

     aliyun ecs DescribeInstances

    Lihat Struktur perintah.

Contoh: Panggil API dengan peran RAM instans

Contoh Python berikut mengunduh file dari OSS menggunakan peran RAM instans pada instans ECS Linux.

pip install oss2  
pip install alibabacloud_credentials
import oss2
from alibabacloud_credentials.client import Client
from alibabacloud_credentials.models import Config
from oss2 import CredentialsProvider
from oss2.credentials import Credentials


class CredentialProviderWarpper(CredentialsProvider):
    def __init__(self, client):
        self.client = client

    def get_credentials(self):
        access_key_id = self.client.get_access_key_id()
        access_key_secret = self.client.get_access_key_secret()
        security_token = self.client.get_security_token()
        return Credentials(access_key_id, access_key_secret, security_token)


def download_image_using_instance_role(bucket_name, endpoint, object_key, local_file, role_name):
    config = Config(
        type='ecs_ram_role',      # Jenis kredensial akses. Nilai ini tetap sebagai ecs_ram_role.
        role_name=role_name
    )
    cred = Client(config)
    credentials_provider = CredentialProviderWarpper(cred)
    auth = oss2.ProviderAuth(credentials_provider)

    # Inisialisasi objek Bucket OSS.
    bucket = oss2.Bucket(auth, endpoint, bucket_name)
    # Unduh gambar ke instans lokal.
    bucket.get_object_to_file(object_key, local_file)
    print("Gambar berhasil diunduh")


if __name__ == "__main__":
    # Definisikan variabel global.
    role_name = 'role_name'  # Ganti dengan nama peran RAM instans Anda.
    bucket_name = 'bucket_name'  # Ganti dengan nama bucket Anda.
    endpoint = 'oss-cn-beijing.aliyuncs.com'  # Ganti dengan titik akhir publik bucket OSS Anda.
    object_key = 'testfolder/example.png'  # Ganti dengan path lengkap gambar yang ingin Anda unduh dari OSS. Jangan sertakan nama bucket.
    local_file = '/localpath/to/image.png'  # Ganti dengan path root pada instans ECS tempat Anda ingin menyimpan gambar, dan tentukan nama gambarnya.
    download_image_using_instance_role(bucket_name, endpoint, object_key, local_file, role_name)

Operasi lainnya

Lepaskan atau ubah peran RAM instans

Console

  1. Buka ECS console - Instances. Di pojok kiri atas, pilih wilayah dan kelompok sumber daya untuk sumber daya target.

  2. Temukan instans ECS yang ingin Anda kelola, lalu pilih icon > Instance Settings > Attach/Detach RAM Role.

    • Untuk melepas peran RAM instans: Atur Action ke Detach lalu klik Confirm.

    • Untuk mengubah peran RAM instans: Atur Action ke Attach, pilih peran RAM instans yang diinginkan, lalu klik Confirm.

API

Referensi