全部产品
Search
文档中心

Elastic Compute Service:Peran RAM Instans

更新时间:Nov 09, 2025

Peran Resource Access Management (RAM) instans merupakan peran layanan yang dapat dihubungkan ke instans Elastic Compute Service (ECS). Entitas tepercaya untuk peran RAM instans adalah ECS. Anda dapat menggunakan peran RAM instans untuk mendapatkan Token Layanan Keamanan (STS) dari dalam instans ECS tanpa perlu memberikan Pasangan Kunci Akses. Token STS tersebut kemudian dapat digunakan untuk memanggil operasi API layanan Alibaba Cloud lainnya. Dengan menggunakan kredensial identitas sementara yang hanya dapat diperoleh dari dalam instans, tidak diperlukan konfigurasi Pasangan Kunci Akses. Pendekatan ini meningkatkan keamanan Pasangan Kunci Akses akun Alibaba Cloud Anda serta memungkinkan pengelolaan izin secara lebih rinci melalui RAM.

Manfaat

  • Pemanggilan API yang aman dan nyaman di dalam instans: Saat proyek diterapkan di Alibaba Cloud ECS, Anda tidak perlu mengonfigurasi Pasangan Kunci Akses di kode. Sebagai gantinya, gunakan kemampuan ECS untuk mendapatkan token STS guna memanggil API. Hal ini mengurangi risiko kebocoran Pasangan Kunci Akses.

  • Pengalihan identitas RAM yang disederhanakan: Jika menggunakan Pasangan Kunci Akses tradisional, Anda harus mengubah konfigurasi atau kode serta memulai ulang layanan untuk mengubah identitas RAM yang memanggil layanan tersebut. Dengan menggunakan Peran RAM Instans, cukup sesuaikan peran RAM yang diberikan kepada instans ECS untuk beralih identitas tanpa perubahan tambahan.

  • Pengelolaan izin dengan detail halus: Tetapkan peran RAM dengan kebijakan otorisasi spesifik ke instans ECS yang berbeda. Ini memungkinkan penerapan kontrol akses dengan detail halus sesuai kebutuhan.

Batasan

Batasan berikut berlaku saat menyambungkan peran RAM ke instans ECS:

  • Jenis jaringan instans ECS harus berupa virtual private cloud (VPC).

  • Hanya satu peran RAM yang dapat disambungkan ke instans ECS.

Prosedur

Jika menggunakan akun Alibaba Cloud, Anda dapat melewati langkah-langkah otorisasi berikut. Namun, jika menggunakan Pengguna RAM atau Peran RAM untuk operasi ini, pastikan memberikan izin yang diperlukan kepada identitas tersebut.

Contoh izin

Kebijakan harus mencakup izin berikut:

  • Mengelola peran RAM: Buat peran RAM dan berikan izin.

  • Menyambungkan atau melepas peran RAM: Pergi ke halaman detail instans untuk menyambungkan atau melepas peran RAM dari instans.

  • Mengizinkan pemberian peran kepada layanan Alibaba Cloud: 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

Buat dan sambungkan peran di Konsol

  1. Masuk ke Konsol Resource Access Management (RAM) untuk membuat peran RAM dan memberikan izin.

    1. Buat Peran RAM untuk Layanan Alibaba Cloud yang terpercaya.

      Pilih Identities > Roles, klik Create Role, dan ikuti petunjuk di layar untuk membuat peran. Perhatikan parameter berikut dan konfigurasikan parameter lainnya sesuai kebutuhan. Untuk informasi lebih lanjut, lihat Buat peran layanan reguler:

      • Untuk Jenis entitas tepercaya, pilih Alibaba Cloud Service.

      • Untuk Layanan Tepercaya, pilih Elastic Compute Service.

    2. Berikan izin kepada peran RAM yang dibuat.

      Sambungkan kebijakan sistem atau kebijakan kustom ke peran RAM untuk memberikannya akses sumber daya atau izin operasi yang diperlukan. Misalnya, berikan kebijakan sistem AliyunOSSReadOnlyAccess kepada peran RAM.

      Jika kebijakan sistem tidak memenuhi kebutuhan Anda, berikan izin kepada peran RAM dengan membuat kebijakan kustom. Untuk informasi lebih lanjut, lihat Buat kebijakan kustom.
  2. Sambungkan peran RAM ke instans ECS.

    1. Pergi ke Konsol ECS - Instans. Di bilah navigasi atas, pilih wilayah dan kelompok sumber daya target.

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

    3. Di kotak dialog, pilih peran RAM instans yang telah dibuat, lalu klik OK.

Buat dan sambungkan peran menggunakan API

  1. Buat peran RAM dan berikan izin.

    1. Panggil operasi CreateRole untuk membuat peran RAM.

      Atur parameter 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 baru.

      Jika 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 peran RAM instans.

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

Dapatkan kredensial identitas sementara untuk peran RAM instans

Anda dapat memperoleh kredensial akses sementara dari dalam instans ECS dengan mengakses layanan metadata. Validitas kredensial akses sementara dikelola secara otomatis. Untuk informasi lebih lanjut, lihat Metadata instans.

Metode 1: Gunakan alat Credentials dalam program

Alat Credentials mencakup logika pemanggilan ECS Instance Metadata Service (IMDS) untuk mendapatkan token STS serta mendukung pembaruan berkala.

Python
  1. Instal alat 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 peran RAM instans. Jika Anda tidak menentukan parameter ini, nama akan diambil secara otomatis. Kami sarankan Anda menentukan parameter ini untuk mengurangi permintaan. Anda juga dapat menyetel nama peran menggunakan variabel lingkungan ALIBABA_CLOUD_ECS_METADATA.
    	role_name='<role_name>',
    	# Opsional. Nilai defaultnya adalah false. Jika Anda menyetel ini ke true, mode penguatan keamanan diterapkan. Jika Anda menyetel ini ke false, sistem pertama-tama mencoba mengambil kredensial dalam mode penguatan keamanan. Jika upaya gagal, sistem mencoba lagi dalam mode normal (IMDSv1).
    	enable_imds_v1=True,
    )
    credentialsClient = CredClient(credentialsConfig)
    

    Untuk informasi lebih lanjut, lihat Metode 5: Peran RAM Instans ECS.

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 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 sarankan Anda menentukan parameter ini untuk mengurangi permintaan. Anda juga dapat menyetel nama peran menggunakan variabel lingkungan ALIBABA_CLOUD_ECS_METADATA.
            credentialConfig.setRoleName("<RoleName>");
            // Opsional. Nilai defaultnya adalah false. Jika Anda menyetel ini ke true, mode penguatan keamanan diterapkan. Jika Anda menyetel ini ke false, sistem pertama-tama mencoba mengambil kredensial dalam mode penguatan keamanan. Jika upaya gagal, sistem mencoba lagi dalam mode normal (IMDSv1).
            credentialConfig.setDisableIMDSv1(true);
            Client credentialClient = new Client(credentialConfig);
        }
    }

    Untuk informasi lebih lanjut, lihat Metode 5: Peran RAM instans ECS.

Go

  1. Instal alat 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 alat tersebut.

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

      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 sarankan Anda menentukan parameter ini untuk mengurangi permintaan. Anda juga dapat menyetel nama peran menggunakan variabel lingkungan ALIBABA_CLOUD_ECS_METADATA.
    		SetRoleName("<RoleName>").
    		// Opsional. Nilai defaultnya adalah false. Jika Anda menyetel ini ke true, mode penguatan keamanan diterapkan. Jika Anda menyetel ini ke false, sistem pertama-tama mencoba mengambil kredensial dalam mode penguatan keamanan. Jika upaya gagal, sistem mencoba lagi dalam mode normal (IMDSv1).
    		SetDisableIMDSv1(true)
    	credentialClient, err := credentials.NewCredential(credentialsConfig)
    	if err != nil {
    		panic(err)
    	}
    }

    Untuk informasi lebih lanjut dan contoh pemanggilan, lihat Metode 5: Menggunakan peran RAM instans ECS.

Node.js

  1. Instal alat 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 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 sarankan Anda menentukan parameter ini untuk mengurangi permintaan. Anda juga dapat menyetel nama peran menggunakan variabel lingkungan ALIBABA_CLOUD_ECS_METADATA.
      roleName: '<RoleName>',
      // Opsional. Nilai defaultnya adalah false. Jika Anda menyetel ini ke true, mode penguatan keamanan diterapkan. Jika Anda menyetel ini ke false, sistem pertama-tama mencoba mengambil kredensial dalam mode penguatan keamanan. Jika upaya gagal, sistem mencoba lagi dalam mode normal (IMDSv1).
      disableIMDSv1: true,
    });
    const cred = new Credential.default(credentialsConfig);
    

    Untuk detail lebih lanjut dan contoh pemanggilan, lihat Metode 5: Menggunakan peran RAM instans ECS.

.NET

  1. Instal alat 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 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 sarankan Anda menentukan parameter ini untuk mengurangi permintaan. Anda juga dapat menyetel nama peran menggunakan variabel lingkungan ALIBABA_CLOUD_ECS_METADATA.
                    RoleName = "<RoleName>",
                    // Opsional. Nilai defaultnya adalah false. Jika Anda menyetel ini ke true, mode penguatan keamanan diterapkan. Jika Anda menyetel ini ke false, sistem pertama-tama mencoba mengambil kredensial dalam mode penguatan keamanan. Jika upaya gagal, sistem mencoba lagi dalam mode normal (IMDSv1).
                    DisableIMDSv1 = true
                }
            }
        }
    }

    Untuk informasi lebih lanjut dan contoh pemanggilan, lihat Metode 5: Gunakan peran RAM instans ECS.

PHP

  1. Instal alat Credentials.

    Untuk mengambil kredensial identitas sementara dalam mode penguatan keamanan, versi credentials harus 1.2.0 atau lebih baru.
    composer require alibabacloud/credentials
  2. Anda dapat mengonfigurasi peran RAM instans untuk 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 sarankan Anda menentukan parameter ini untuk mengurangi permintaan. Anda juga dapat menyetel nama peran menggunakan variabel lingkungan ALIBABA_CLOUD_ECS_METADATA.
        'roleName' => '<RoleName>',
        // Opsional. Nilai defaultnya adalah false. Jika Anda menyetel ini ke true, mode penguatan keamanan diterapkan. Jika Anda menyetel ini ke false, sistem pertama-tama mencoba mengambil kredensial dalam mode penguatan keamanan. Jika upaya gagal, sistem mencoba lagi dalam mode normal (IMDSv1).
        'disableIMDSv1' => true,
    ]);

    Untuk informasi lebih lanjut, termasuk contoh pemanggilan, lihat Metode 5: Gunakan peran RAM instans ECS.

Metode 2: Gunakan perintah shell

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

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:<periode_validitas_token_akses_server_metadata>"` 
    # 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/<nama_peran_RAM_instans>
  • Instans Windows (PowerShell)

    # Dapatkan token akses server metadata untuk autentikasi.
    $token = Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "<periode_validitas_token_akses_server_metadata>"} -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/<nama_peran_RAM_instans>

<periode_validitas_token_akses_server_metadata>: Sebelum mengambil kredensial akses sementara peran RAM instans, Anda harus mendapatkan token akses server metadata dan menyetel periode validitasnya untuk meningkatkan keamanan data. Setelah periode validitas berakhir, Anda harus mendapatkan token lagi. Jika tidak, Anda tidak dapat mengambil kredensial akses sementara peran RAM instans.

Nilai valid: 1 hingga 21600. Unit: detik. Untuk informasi lebih lanjut, lihat Metadata instans.

<nama_peran_RAM_instans>: Ganti ini dengan nama peran RAM instans Anda. Misalnya, EcsRamRole.

Catatan

Jika menggunakan Asisten Cloud untuk menjalankan perintah di atas, pastikan bahwa Agen Asisten Cloud 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/<nama_peran_RAM_instans>
  • Instans Windows (PowerShell)

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

    Ganti <nama_peran_RAM_instans> dengan nama peran RAM instans Anda. Misalnya, EcsRamRoleDocumentTesting.

Kode berikut memberikan contoh tanggapan:

  • Token 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"
    }

Metode 3: Gunakan CLI Alibaba Cloud

Antarmuka baris perintah (CLI) mendukung pemanggilan ECS IMDS untuk mendapatkan token STS. Ini juga mendukung pembaruan 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 petunjuk untuk memasukkan informasi yang diperlukan. Untuk informasi lebih lanjut, lihat Konfigurasikan kredensial.

  3. Panggil operasi API.

    Misalnya, gunakan CLI untuk menanyakan daftar instans ECS.

     aliyun ecs DescribeInstances

    Untuk informasi lebih lanjut tentang perintah CLI, lihat Struktur perintah.

Gunakan peran RAM instans untuk memanggil API

Contoh berikut menunjukkan cara menggunakan Peran RAM instans. Aplikasi Python yang diterapkan pada instans Elastic Compute Service (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 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__":
    # Tentukan 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 jalur lengkap gambar yang ingin Anda unduh dari OSS. Jangan sertakan nama bucket.
    local_file = '/localpath/to/image.png'  # Ganti dengan jalur root di instans ECS tempat Anda ingin menyimpan gambar, dan tentukan nama gambar.
    download_image_using_instance_role(bucket_name, endpoint, object_key, local_file, role_name)

Operasi lainnya

Lepas atau ubah peran RAM instans ECS

Lepas atau ubah peran di Konsol

  1. Buka Konsol ECS - Instans. Di bilah navigasi atas, pilih wilayah dan kelompok sumber daya target.

  2. Cari instans ECS yang ingin dikelola, lalu pilih icon > Instance Settings > Attach/Detach RAM Role.

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

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

Lepas atau ubah peran menggunakan API

Referensi