全部产品
Search
文档中心

ApsaraVideo VOD:Mendapatkan token STS

更新时间:Feb 10, 2026

Token Security Token Service (STS) membantu mencegah risiko keamanan akibat kebocoran pasangan AccessKey milik pengguna Resource Access Management (RAM). Untuk mendapatkan token STS, buat pengguna RAM dan peran RAM, berikan izin yang diperlukan kepada keduanya, lalu gunakan pasangan AccessKey pengguna RAM tersebut untuk memanggil operasi AssumeRole guna mengasumsikan peran RAM. Anda kemudian dapat mengambil token STS dari layanan STS.

Langkah 1: Buat pengguna RAM

Buat pengguna RAM, dan perhatikan hal berikut:

  1. Atur parameter Logon Name menjadi vod. Topik ini menggunakan vod sebagai nama logon di semua contoh selanjutnya.

  2. Atur parameter Access Mode menjadi Using permanent AccessKey to access.

  3. Simpan dengan aman pasangan AccessKey yang diperoleh.

Langkah 2: Berikan izin kepada pengguna RAM untuk memanggil operasi AssumeRole STS

  1. Di konsol RAM, buka halaman Users. Temukan pengguna RAM bernama vod dan klik Add Permissions di kolom Actions.

  2. Di panel Grant Permission, berikan izin kepada pengguna RAM.

    Catatan

    Hubungkan kebijakan AliyunSTSAssumeRoleAccess ke pengguna vod. Kebijakan ini memungkinkan pengguna memanggil operasi STS AssumeRole. Untuk menemukan kebijakan tersebut, pilih System Policy dan masukkan AliyunSTSAssumeRoleAccess di kotak pencarian.

    截屏2025-06-03 09

    • Pilih Resource Scope:

      • Account level: Izin berlaku untuk akun Alibaba Cloud saat ini.

      • Resource group level: Izin berlaku untuk kelompok sumber daya tertentu. Jika Anda memberikan izin tingkat kelompok sumber daya kepada pengguna RAM, pengguna tersebut harus mengganti cakupan sumber daya ke kelompok sumber daya tersebut di bilah navigasi atas setelah masuk ke konsol. Hanya dengan demikian pengguna dapat mengakses dan mengelola sumber daya dalam kelompok tersebut.

        Catatan
        1. Sistem secara otomatis menandai kebijakan sistem berisiko tinggi seperti AdministratorAccess dan AliyunRAMFullAccess. Kebijakan ini sering memberikan kontrol penuh atas semua sumber daya cloud atau manajemen penuh terhadap Resource Access Management (RAM). Berikan dengan hati-hati.

        2. Untuk contoh otorisasi kelompok sumber daya, lihat Gunakan kelompok sumber daya untuk membatasi pengguna RAM hanya mengelola instance ECS tertentu.

    • Pilih principal:

      Principal adalah pengguna RAM yang menerima izin. Jika Anda memulai dari halaman Users, sistem akan secara otomatis memilih pengguna RAM saat ini. Jika Anda memulai dari halaman Grant Permission, pilih satu atau beberapa pengguna RAM secara manual.

    • Pilih Permission Policy:

      • System policy: Cari dan pilih langsung. Tips pencarian: Gunakan kotak pencarian untuk menemukan kebijakan dengan cepat. Anda dapat mencari berdasarkan nama produk (seperti ECS atau OSS), tingkat izin (seperti ReadOnly atau FullAccess), atau nama lengkap kebijakan.

      • Custom policy: Pertama-tama buat kebijakan kustom. Untuk informasi lebih lanjut, lihat Buat kebijakan kustom.

    • Klik Confirm Grant Permission.

  3. Tinjau hasil otorisasi dan klik Close.

Langkah 3: Buat peran RAM

Catatan

Pada Langkah 5 di bawah, atur parameter Role Name menjadi vodrole. Topik ini menggunakan vodrole sebagai nama peran di semua contoh selanjutnya.

  1. Masuk ke konsol Resource Access Management (RAM) sebagai administrator RAM.

  2. Di panel navigasi kiri, pilih Identity Management > Roles.

  3. Di halaman Roles, klik Create Role.

    image

  4. Di halaman Create Role, atur Trusted Entity Type menjadi Alibaba Cloud Account. Lalu, konfigurasikan akun Alibaba Cloud dan klik OK.

    image

    • Current Alibaba Cloud Account: Untuk mengizinkan semua pengguna RAM dan peran RAM mengasumsikan peran ini, pilih Current Alibaba Cloud Account.

    • Other Alibaba Cloud Account: Untuk mengizinkan semua pengguna RAM dan peran RAM dari akun Alibaba Cloud lain mengasumsikan peran RAM ini, pilih Other Alibaba Cloud Account dan masukkan ID akun tersebut. Opsi ini digunakan untuk akses sumber daya lintas akun. Untuk informasi lebih lanjut, lihat Akses sumber daya lintas akun Alibaba Cloud. Anda dapat menemukan ID akun Alibaba Cloud Anda di halaman Security Settings.

  5. (Opsional) Jika Anda hanya ingin mengizinkan pengguna RAM atau peran RAM tertentu di akun Alibaba Cloud tepercaya untuk mengasumsikan peran RAM ini, klik Switch Editor dan modifikasi kebijakan kepercayaan.

    Editor mendukung dua mode: visual editor dan script editor. Contoh berikut menunjukkan cara mengonfigurasi peran RAM agar hanya dapat diasumsikan oleh pengguna RAM Alice di akun Alibaba Cloud saat ini (AccountID=100******0719).

    • Visual editor

      Di bagian Principal, tentukan username RAM.

      image

      image

    • Script editor

      Di bidang RAM elemen Principal, tentukan pengguna RAM.

      {
        "Version": "1",
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "RAM": "acs:ram::100******0719:user/Alice"
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }

  6. Di kotak dialog Create Role, masukkan Role Name dan klik OK.

Langkah 4: Berikan izin kepada peran RAM untuk mengelola ApsaraVideo VOD

  1. Di konsol RAM, buka halaman Roles. Temukan peran RAM bernama vodrole dan klik Grant Permission di kolom Actions.

  2. Di panel Grant Permission, berikan izin kepada peran RAM.

    Catatan
    • Untuk mengurangi risiko, terapkan prinsip hak istimewa minimal.

    • Jika peran vodrole perlu mengakses dan mengelola sumber daya ApsaraVideo VOD, hubungkan kebijakan sistem AliyunVODFullAccess ke peran tersebut. Kebijakan ini memberikan akses penuh ke semua sumber daya ApsaraVideo VOD. Untuk menemukan kebijakan tersebut, pilih System Policy dan masukkan AliyunVODFullAccess di kotak pencarian. Untuk informasi lebih lanjut tentang kebijakan sistem ApsaraVideo VOD dan izinnya, lihat Kebijakan sistem.

    授权

    • Pilih Resource Scope:

      • Account level: Izin berlaku untuk akun Alibaba Cloud saat ini.

      • Resource group level: Izin berlaku untuk kelompok sumber daya tertentu. Jika Anda memberikan izin tingkat kelompok sumber daya kepada pengguna RAM, pengguna tersebut harus mengganti cakupan sumber daya ke kelompok sumber daya tersebut di bilah navigasi atas setelah masuk ke konsol. Hanya dengan demikian pengguna dapat mengakses dan mengelola sumber daya dalam kelompok tersebut.

        Catatan
        1. Sistem secara otomatis menandai kebijakan sistem berisiko tinggi seperti AdministratorAccess dan AliyunRAMFullAccess. Kebijakan ini sering memberikan kontrol penuh atas semua sumber daya cloud atau manajemen penuh terhadap Resource Access Management (RAM). Berikan dengan hati-hati.

        2. Untuk contoh otorisasi kelompok sumber daya, lihat Gunakan kelompok sumber daya untuk membatasi pengguna RAM hanya mengelola instance ECS tertentu.

    • Pilih principal:

      Principal adalah pengguna RAM yang menerima izin. Jika Anda memulai dari halaman Users, sistem akan secara otomatis memilih pengguna RAM saat ini. Jika Anda memulai dari halaman Grant Permission, pilih satu atau beberapa pengguna RAM secara manual.

    • Pilih Permission Policy:

      • System policy: Cari dan pilih langsung. Search tips: Gunakan kotak pencarian untuk menemukan kebijakan dengan cepat. Anda dapat mencari berdasarkan nama produk (seperti ECS atau OSS), tingkat izin (seperti ReadOnly atau FullAccess), atau nama lengkap kebijakan.

      • Custom policy: Pertama-tama buat kebijakan kustom. Untuk informasi lebih lanjut, lihat Buat kebijakan kustom.

    • Klik Confirm Grant Permission.

    Setelah otorisasi selesai, catatan sukses akan muncul.授权成功

  3. Tinjau hasil otorisasi dan klik Close.

Langkah 5: Asumsikan peran RAM dan dapatkan token STS

Panggil operasi STS AssumeRole – Dapatkan kredensial sementara untuk mengasumsikan peran menggunakan pengguna RAM. Ini akan mengembalikan token STS peran RAM. Anda dapat menggunakan token STS tersebut untuk langsung memanggil operasi API ApsaraVideo VOD atau mendistribusikannya ke klien untuk melakukan tugas seperti unggahan langsung dari klien. Topik ini menyediakan contoh Java SDK. Untuk contoh dalam bahasa lain, lihat Ikhtisar SDK STS.

SDK V1.0

Di Maven, tambahkan informasi dependensi berikut:

<dependency>
   <groupId>com.aliyun</groupId>
   <artifactId>aliyun-java-sdk-sts</artifactId>
   <version>3.1.2</version>
</dependency>
<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>4.7.3</version>
</dependency>
<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-vod</artifactId>
  <version>2.16.32</version>
</dependency>
package pop;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.aliyuncs.sts.model.v20150401.AssumeRoleRequest;
import com.aliyuncs.sts.model.v20150401.AssumeRoleResponse;

public class TestStsService {

    public static void main(String[] args) {
        // Dapatkan pasangan AccessKey (ID AccessKey dan Rahasia AccessKey) untuk pengguna RAM yang dibuat di Langkah 1 dari variabel lingkungan.
        String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // Konfigurasikan parameter permintaan untuk operasi AssumeRole: RoleArn, RoleSessionName, Policy, dan DurationSeconds.
        // Dapatkan nilai RoleArn dari konsol RAM berdasarkan Langkah 3.
        String roleArn = "<role-arn>";
        // Atur nilai kustom untuk RoleSessionName. RoleSessionName menentukan nama sesi peran.
        String roleSessionName = "session-name";
        // Sesuaikan kebijakan.
        String policy = "{\n" +
                "  \"Version\": \"1\",\n" +
                "  \"Statement\": [\n" +
                "    {\n" +
                "      \"Action\": \"vod:*\",\n" +
                "      \"Resource\": \"*\",\n" +
                "      \"Effect\": \"Allow\"\n" +
                "    }\n" +
                "  ]\n" +
                "}";
        try {
            AssumeRoleResponse response = assumeRole(accessKeyId, accessKeySecret, roleArn, roleSessionName, policy);
            System.out.println("Expiration: " + response.getCredentials().getExpiration());
            System.out.println("Access Key Id: " + response.getCredentials().getAccessKeyId());
            System.out.println("Access Key Secret: " + response.getCredentials().getAccessKeySecret());
            System.out.println("Security Token: " + response.getCredentials().getSecurityToken());
            System.out.println("RequestId: " + response.getRequestId());

        } catch (ClientException e) {
            System.out.println("Gagal mendapatkan token.");
            System.out.println("Kode error: " + e.getErrCode());
            System.out.println("Pesan error: " + e.getErrMsg());
        }
    }

    static AssumeRoleResponse assumeRole(String accessKeyId, String accessKeySecret, String roleArn, String roleSessionName, String policy) throws ClientException {
        try {
            // Bangun profil default. Biarkan parameter regionId kosong.
            /*
            Catatan: Jika Anda mengatur SysEndpoint ke sts.aliyuncs.com, parameter regionId bersifat opsional. Jika tidak, Anda harus mengatur regionId ke wilayah layanan. Contoh: cn-shanghai.
            Untuk informasi lebih lanjut, lihat titik akhir untuk setiap wilayah STS.
             */
            IClientProfile profile = DefaultProfile.getProfile("", accessKeyId, accessKeySecret);
            // Bangun klien menggunakan profil.
            DefaultAcsClient client = new DefaultAcsClient(profile);
            // Buat AssumeRoleRequest dan konfigurasikan parameter permintaan.
            final AssumeRoleRequest request = new AssumeRoleRequest();
            request.setSysEndpoint("sts.aliyuncs.com");
            request.setSysMethod(MethodType.POST);
            request.setRoleArn(roleArn);
            request.setRoleSessionName(roleSessionName);
            request.setPolicy(policy);
            // Kirim permintaan dan dapatkan tanggapan.
            final AssumeRoleResponse response = client.getAcsResponse(request);
            return response;
        } catch (ClientException e) {
            throw e;
        }
    }
}

SDK V2.0

Di Maven, tambahkan informasi dependensi berikut:

<dependency>
   <groupId>com.aliyun</groupId>
   <artifactId>sts20150401</artifactId>
   <version>1.1.7</version>
</dependency>
<dependency>
   <groupId>com.aliyun</groupId>
   <artifactId>vod20170321</artifactId>
   <version>3.6.4</version>
</dependency>
import com.aliyun.sts20150401.Client;
import com.aliyun.sts20150401.models.AssumeRoleRequest;
import com.aliyun.sts20150401.models.AssumeRoleResponse;
import com.aliyun.sts20150401.models.AssumeRoleResponseBody;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;

public class TestStsService {
    public static void main(String[] args) {
        // Dapatkan pasangan AccessKey (ID AccessKey dan Rahasia AccessKey) untuk pengguna RAM yang dibuat di Langkah 1 dari variabel lingkungan.
        String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // Konfigurasikan parameter permintaan untuk operasi AssumeRole: RoleArn, RoleSessionName, Policy, dan DurationSeconds.
        // Dapatkan nilai RoleArn dari konsol RAM berdasarkan Langkah 3.
        String roleArn = "<role-arn>";
        // Atur nilai kustom untuk RoleSessionName.
        String roleSessionName = "session-name";
        // Sesuaikan kebijakan.
        String policy = "{\n" +
                "  \"Version\": \"1\",\n" +
                "  \"Statement\": [\n" +
                "    {\n" +
                "      \"Action\": \"vod:*\",\n" +
                "      \"Resource\": \"*\",\n" +
                "      \"Effect\": \"Allow\"\n" +
                "    }\n" +
                "  ]\n" +
                "}";
        try {
            AssumeRoleResponse assumeRoleResponse = assumeRole(accessKeyId, accessKeySecret, roleArn, roleSessionName, policy);
            System.out.println("Expiration: " + response.getCredentials().getExpiration());
            System.out.println("Access Key Id: " + response.getCredentials().getAccessKeyId());
            System.out.println("Access Key Secret: " + response.getCredentials().getAccessKeySecret());
            System.out.println("Security Token: " + response.getCredentials().getSecurityToken());
            System.out.println("RequestId: " + response.getRequestId());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public static AssumeRoleResponse assumeRole(String accessKeyId, String accessKeySecret, String roleArn, String roleSessionName, String policy) throws Exception {
        Config config = new Config()
                // Dapatkan ID AccessKey dari variabel lingkungan.
                .setAccessKeyId(accessKeyId)
                // Dapatkan Rahasia AccessKey dari variabel lingkungan.
                .setAccessKeySecret(accessKeySecret);
        config.endpoint = "sts.cn-hangzhou.aliyuncs.com";
        Client client = new Client(config);
        AssumeRoleRequest assumeRoleRequest = new AssumeRoleRequest()
                .setRoleArn(roleArn)
                .setRoleSessionName(roleSessionName)
                .setPolicy(policy);
        RuntimeOptions runtime = new RuntimeOptions();
        return client.assumeRoleWithOptions(assumeRoleRequest, runtime);
    }
}