全部产品
Search
文档中心

Elastic Compute Service:Instance RAM roles

更新时间:Dec 26, 2025

Instance Resource Access Management (RAM) role adalah peran layanan yang dapat Anda sambungkan ke instans Elastic Compute Service (ECS). Entitas tepercaya dari instance RAM role adalah ECS. Dengan instance RAM role, Anda dapat memperoleh token Security Token Service (STS) dari dalam instans ECS tanpa menyediakan pasangan AccessKey, lalu menggunakan token tersebut untuk memanggil operasi API layanan Alibaba Cloud lainnya. Kredensial identitas sementara hanya dapat diperoleh dari dalam instans, sehingga menghilangkan kebutuhan untuk mengonfigurasi pasangan AccessKey. Pendekatan ini meningkatkan keamanan pasangan AccessKey akun Alibaba Cloud Anda dan memungkinkan penerapan pengelolaan izin detail halus melalui RAM.

Manfaat

  • Pemanggilan API yang aman dan praktis di dalam instans: Saat proyek Anda dideploy di Alibaba Cloud ECS, Anda dapat menggunakan instance RAM role untuk memperoleh token STS guna memanggil API, tanpa perlu mengonfigurasi pasangan AccessKey di dalam kode. Hal ini mengurangi risiko kebocoran pasangan AccessKey.

  • Perpindahan identitas RAM yang disederhanakan: Jika menggunakan pasangan AccessKey tradisional, Anda harus mengubah konfigurasi atau kode serta me-restart layanan untuk mengganti identitas RAM yang memanggil layanan tersebut. Dengan instance RAM role, Anda cukup mengganti peran RAM yang disambungkan ke instans ECS untuk berpindah identitas—tanpa perubahan tambahan.

  • Pengelolaan izin detail halus: Anda dapat menetapkan peran RAM dengan kebijakan otorisasi tertentu ke instans ECS yang berbeda, sehingga menerapkan kontrol akses detail halus sesuai kebutuhan.

Batasan

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

Prosedur

Jika Anda menggunakan pengguna RAM atau peran RAM untuk melakukan operasi berikut, berikan izin yang diperlukan kepada identitas tersebut.

Izin contoh

Izin ini mencakup hal-hal berikut:

  • Manage RAM roles: Membuat peran RAM dan memberikan izin.

  • Attach or detach RAM roles: Memungkinkan Anda menyambungkan atau melepas peran RAM dari suatu instans.

  • Allow passing roles to Alibaba Cloud 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": "*"
        }
    ]
}

Create a RAM role and attach it to an ECS instance

Create and attach a role in the console

  1. Login ke RAM console untuk membuat peran RAM dan memberikan izin.

    1. Buat peran RAM untuk layanan Alibaba Cloud tepercaya.

      Pilih Identities > Roles, klik Create Role, lalu ikuti petunjuk di layar untuk membuat peran tersebut. Perhatikan parameter berikut dan konfigurasikan parameter lain sesuai kebutuhan. Untuk informasi selengkapnya, lihat Create a service role:

      • Untuk Trusted Entity Type, pilih Alibaba Cloud Service.

      • Untuk Trusted Service, pilih Elastic Compute Service.

    2. Berikan izin kepada peran RAM yang telah dibuat.

      Sambungkan kebijakan sistem atau kebijakan kustom ke peran RAM untuk memberikan izin akses resource atau operasi yang diperlukan. Misalnya, berikan kebijakan sistem AliyunOSSReadOnlyAccess ke peran RAM tersebut.

      Jika kebijakan sistem tidak memenuhi kebutuhan Anda, Anda dapat memberikan izin ke peran RAM dengan membuat kebijakan kustom. Untuk informasi selengkapnya, lihat Create a custom policy.
  2. Sambungkan peran RAM ke instans ECS.

    1. Buka ECS console - Instances. Di bilah navigasi atas, pilih wilayah dan kelompok sumber daya yang dituju.

    2. Temukan instans ECS yang dituju, lalu pilih 图标 > Instance Settings > Attach/Detach RAM Role.

    3. Di kotak dialog, pilih instance RAM role lalu klik OK.

Creation via API and granting

  1. Buat peran RAM dan berikan izin.

    1. Panggil operasi CreateRole untuk membuat peran RAM.

      Parameter untuk kebijakan kepercayaan (AssumeRolePolicyDocument):

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

      Jika Anda sudah memiliki kebijakan akses yang tersedia, Anda dapat melewati langkah ini.

      Atur parameter PolicyDocument sebagai berikut:

      {
           "Statement": [
               {
               "Action": [
                   "oss:Get*",
                   "oss:List*"
               ],
               "Effect": "Allow",
               "Resource": "*"
               }
           ],
           "Version": "1"
       }
    3. Panggil operasi AttachPolicyToRole untuk memberikan izin kepada instance RAM role.

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

Obtain temporary identity credentials for an instance RAM role

Anda dapat memperoleh kredensial akses sementara dari dalam instans ECS dengan mengakses Instance Metadata Service (IMDS). Periode validitas kredensial akses sementara dikelola secara otomatis. Untuk informasi selengkapnya tentang metadata, lihat Instance metadata.

Method 1: Use the Credentials tool in a program

Tool Credentials mengenkapsulasi logika pemanggilan ECS IMDS untuk memperoleh token STS dan mendukung perpanjangan berkala.

Python
  1. Instal tool Credentials.

    Untuk mengambil kredensial identitas sementara dalam mode penguatan keamanan, versi alibabacloud_credentials harus 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 instance RAM role. 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 akan mencoba mengambil kredensial dalam mode penguatan keamanan. Jika gagal, sistem akan mencoba lagi dalam mode NAT (IMDSv1).
    	disable_imds_v1=False,
    )
    credentialsClient = CredClient(credentialsConfig)
    

    Untuk informasi selengkapnya dan contoh pemanggilan, lihat Method 5: ECS instance RAM role.

Java

  1. Tambahkan dependensi credentials.

    Untuk mengambil kredensial identitas sementara dalam mode penguatan keamanan, versi credentials-java harus 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. Anda dapat mengonfigurasi instans ECS untuk menggunakan instance RAM role-nya 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 instance RAM role. 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 akan mencoba mengambil kredensial dalam mode penguatan keamanan. Jika gagal, sistem akan mencoba lagi dalam mode NAT (IMDSv1).
            credentialConfig.setDisableIMDSv1(true);
            Client credentialClient = new Client(credentialConfig);
        }
    }

    Untuk informasi selengkapnya dan contoh pemanggilan, lihat Method 5: ECS instance RAM role.

Go

  1. Instal tool Credentials.

    Untuk mengambil kredensial identitas sementara dalam mode penguatan keamanan, versi credentials-go harus 1.3.10 atau lebih baru.
    • Gunakan go get untuk mengunduh dan menginstal tool tersebut.

      go get -u github.com/aliyun/credentials-go
    • Jika Anda menggunakan dep untuk mengelola dependensi, jalankan perintah berikut.

      dep ensure -add github.com/aliyun/credentials-go
  2. Konfigurasikan instance RAM role 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 instance RAM role. 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 akan mencoba mengambil kredensial dalam mode penguatan keamanan. Jika gagal, sistem akan mencoba lagi dalam mode NAT (IMDSv1).
    		SetDisableIMDSv1(true)
    	credentialClient, err := credentials.NewCredential(credentialsConfig)
    	if err != nil {
    		panic(err)
    	}
    }

    Untuk informasi selengkapnya dan contoh pemanggilan, lihat Method 5: Use an ECS instance RAM role.

Node.js

  1. Instal tool Credentials.

    Untuk mengambil kredensial identitas sementara dalam mode penguatan keamanan, versi credentials harus 2.3.1 atau lebih baru.
    npm install @alicloud/credentials
  2. Konfigurasikan instance RAM role instans ECS sebagai kredensial akses.

    const Credential = require('@alicloud/credentials');
    
    const credentialsConfig = new Credential.Config({
      type: 'ecs_ram_role',
      // Opsional. Nama instance RAM role. 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 akan mencoba mengambil kredensial dalam mode penguatan keamanan. Jika gagal, sistem akan mencoba lagi dalam mode NAT (IMDSv1).
      disableIMDSv1: true,
    });
    const cred = new Credential.default(credentialsConfig);
    

    Untuk informasi selengkapnya dan contoh pemanggilan, lihat Method 5: Use an ECS instance RAM role.

.NET

  1. Instal tool Credentials.

    Untuk mengambil kredensial identitas sementara dalam mode penguatan keamanan, versi credentials harus 1.4.2 atau lebih baru.
    dotnet add package Aliyun.Credentials
  2. Konfigurasikan instance RAM role 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 instance RAM role. 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 akan mencoba mengambil kredensial dalam mode penguatan keamanan. Jika gagal, sistem akan mencoba lagi dalam mode NAT (IMDSv1).
                    DisableIMDSv1 = true
                }
            }
        }
    }

    Untuk informasi selengkapnya dan contoh pemanggilan, lihat Method 5: Use an ECS instance RAM role.

PHP

  1. Instal tool Credentials.

    Untuk mengambil kredensial identitas sementara dalam mode penguatan keamanan, versi credentials harus 1.2.0 atau lebih baru.
    composer require alibabacloud/credentials
  2. Konfigurasikan instans ECS untuk menggunakan instance RAM role-nya sebagai kredensial akses.

    <?php
    
    use AlibabaCloud\Credentials\Credential;
    use AlibabaCloud\Credentials\Credential\Config;
    
    $credConfig = new Config([
        'type' => 'ecs_ram_role',
        // Opsional. Nama instance RAM role. 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 akan mencoba mengambil kredensial dalam mode penguatan keamanan. Jika gagal, sistem akan mencoba lagi dalam mode NAT (IMDSv1).
        'disableIMDSv1' => true,
    ]);

    Untuk informasi selengkapnya, lihat Method 5: Use an ECS instance RAM role.

Method 2: Use shell commands

Layanan metadata menyediakan titik akhir HTTP untuk mengambil kredensial akses sementara.

Security hardening mode

  • 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 temporary instance RAM role.
    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 temporary instance RAM role.
    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>: Sebelum Anda mengambil kredensial akses sementara instance RAM role, Anda harus terlebih dahulu memperoleh token akses untuk server metadata. Token ini memiliki periode validitas yang dapat dikonfigurasi untuk meningkatkan keamanan data. Setelah token kedaluwarsa, Anda harus memperoleh token baru sebelum dapat mengambil kredensial akses sementara.

Nilai yang valid: 1 hingga 21600. Satuan: detik. Untuk informasi selengkapnya, lihat Instance metadata.

<instance_RAM_role_name>: Ganti ini dengan nama instance RAM role Anda. Contohnya, EcsRamRole.

Catatan

Jika Anda menggunakan Cloud Assistant untuk menjalankan perintah di atas, pastikan Cloud Assistant Agent memenuhi persyaratan versi minimum berikut:

Platform

Cloud Assistant Agent version number

windows

2.1.3.857

linux

2.2.3.857

linux arm

2.4.3.857

freebsd

2.3.3.857

NAT mode

  • 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 instance RAM role Anda. Contohnya, EcsRamRoleDocumentTesting.

Berikut ini contoh respons:

  • Kredensial akses sementara terdiri dari nilai AccessKeyId, AccessKeySecret, dan SecurityToken.

  • Expiration: Waktu kedaluwarsa kredensial akses sementara.

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

Method 3: Use the Alibaba Cloud CLI

Antarmuka baris perintah (CLI) mendukung pemanggilan ECS IMDS untuk memperoleh token STS serta penyegaran berkala dan otomatis.

Untuk mengambil kredensial identitas sementara dalam mode penguatan keamanan, versi CLI harus 3.0.248 atau lebih baru.
  1. Instal CLI.

  2. Konfigurasikan kredensial identitas.

    Jalankan perintah berikut untuk mengonfigurasi informasi kredensial. Ganti <ProfileName> dengan nama konfigurasi Anda.

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

    Ini adalah perintah interaktif. Ikuti prompt untuk memasukkan informasi yang diperlukan. Untuk informasi selengkapnya, lihat Configure credentials.

  3. Panggil operasi API.

    Contohnya, gunakan CLI untuk mengkueri daftar instans ECS.

     aliyun ecs DescribeInstances

    Untuk informasi selengkapnya tentang perintah CLI, lihat Command structure.

Use an instance RAM role to call an API

Contoh berikut menunjukkan cara menggunakan instance RAM role. Aplikasi Python yang dideploy pada instans ECS Linux memanggil operasi API OSS untuk mengunduh file.

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 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 citra ke instans lokal.
    bucket.get_object_to_file(object_key, local_file)
    print("Image downloaded successfully")


if __name__ == "__main__":
    # Definisikan variabel global.
    role_name = 'role_name'  # Ganti dengan nama instance RAM role 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 citra 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 citra, dan tentukan nama citra tersebut.
    download_image_using_instance_role(bucket_name, endpoint, object_key, local_file, role_name)

Other operations

Detach or change the instance RAM role of an ECS instance

Detach or change a role in the console

  1. Buka ECS console - Instances. Di bilah navigasi atas, pilih wilayah dan kelompok sumber daya yang dituju.

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

    • Untuk melepas instance RAM role, pilih Detach untuk Operation Type lalu klik OK.

    • Untuk mengganti instance RAM role, atur Operation Type menjadi Attach, pilih instance RAM role yang diperlukan, lalu klik OK.

Detach or change a role using the API

References