全部产品
Search
文档中心

Object Storage Service:Konfigurasikan kredensial akses (Node.js SDK)

更新时间:Nov 30, 2025

Untuk mengirim permintaan OSS menggunakan kit pengembangan perangkat lunak (SDK) Node.js, Anda perlu mengonfigurasi kredensial akses. Layanan Alibaba Cloud menggunakan kredensial ini untuk memverifikasi identitas dan izin akses Anda. Pilih metode penyediaan kredensial sesuai dengan kebutuhan autentikasi dan otorisasi skenario Anda.

Prasyarat

Sebelum mengonfigurasi kredensial akses, Anda harus menginstal OSS Node.js SDK. Untuk informasi selengkapnya, lihat Instal Node.js SDK.

Inisialisasi penyedia kredensial

Pilih penyedia kredensial

Anda dapat menginisialisasi penyedia kredensial untuk OSS dengan beberapa cara. Pilih metode yang sesuai dengan kebutuhan autentikasi dan otorisasi skenario Anda.

Metode inisialisasi penyedia kredensial

Skenario

Memerlukan AccessKey atau token Security Token Service yang telah ada sebelumnya?

Kredensial dasar

Masa berlaku kredensial

Metode rotasi atau pembaruan kredensial

Metode 1: Gunakan AccessKey

Untuk aplikasi yang berjalan di lingkungan aman dan stabil serta memerlukan akses jangka panjang ke layanan Alibaba Cloud tanpa rotasi kredensial yang sering.

Ya

AccessKey

Jangka panjang

Rotasi manual

Metode 2: Gunakan token STS

Untuk aplikasi yang berjalan di lingkungan tidak tepercaya dan memerlukan kontrol atas masa berlaku akses serta izin.

Ya

Security Token Service (STS) token

Sementara

Pembaruan manual

Metode 3: Gunakan RAMRoleARN

Untuk aplikasi yang memerlukan akses terotorisasi ke layanan Alibaba Cloud, seperti akses cross-account.

Ya

STS token

Sementara

Auto-refresh

Metode 4: Dapatkan peran RAM dari metadata instans ECS dalam mode standar

Untuk aplikasi yang berjalan pada instans ECS Alibaba Cloud, instans ECI, atau node pekerja Container Service for Kubernetes.

Tidak

STS token

Sementara

Auto-refresh

Metode 5: Gunakan OIDCRoleArn

Untuk aplikasi tidak tepercaya yang berjalan pada node pekerja Container Service for Kubernetes di Alibaba Cloud.

Tidak

STS token

Sementara

Auto-refresh

Metode 6: Gunakan CredentialsURI

Untuk aplikasi yang perlu mendapatkan kredensial akses dari sistem eksternal.

Tidak

STS token

Sementara

Auto-refresh

Metode 1: Gunakan AccessKey

Jika aplikasi Anda berjalan di lingkungan aman, memerlukan akses jangka panjang ke OSS, dan tidak dapat melakukan rotasi kredensial secara berkala, Anda dapat menggunakan pasangan AccessKey dari Akun Alibaba Cloud atau Pengguna Resource Access Management (RAM) untuk menginisialisasi penyedia kredensial. Pasangan AccessKey terdiri dari ID AccessKey dan Rahasia AccessKey. Metode ini mengharuskan Anda memelihara pasangan AccessKey secara manual, yang meningkatkan risiko keamanan dan kompleksitas pemeliharaan. Untuk informasi selengkapnya tentang cara mendapatkan pasangan AccessKey, lihat CreateAccessKey.

Peringatan

Akun Alibaba Cloud memiliki izin penuh atas semua sumber daya. Kebocoran pasangan AccessKey menimbulkan risiko keamanan signifikan bagi sistem Anda. Jangan gunakan pasangan AccessKey dari Akun Alibaba Cloud. Sebagai gantinya, gunakan pasangan AccessKey dari Pengguna RAM dengan izin minimum yang diperlukan.

  1. Atur variabel lingkungan.

    Mac OS X/Linux/Unix

    export ALIBABA_CLOUD_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID>
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>

    Windows

    set ALIBABA_CLOUD_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID>
    set ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>
  2. Gunakan pasangan AccessKey untuk menginisialisasi klien.

    const OSS = require("ali-oss");
    
    // Inisialisasi OSS.
    const client = new OSS({
      // Dapatkan ID AccessKey dari variabel lingkungan.
      accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
      // Dapatkan Rahasia AccessKey dari variabel lingkungan.
      accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET
    });
    
    // listBuckets
    const buckets = await client.listBuckets();
    console.log(buckets);
    

Metode 2: Gunakan token STS

Sebagai Pengguna RAM, Anda dapat memanggil operasi AssumeRole dari Security Token Service (STS) dan mengatur waktu kedaluwarsa maksimum token untuk mendapatkan kredensial sementara, yaitu token STS.

  1. Atur variabel lingkungan.

    Mac OS X/Linux/Unix

    export ALIBABA_CLOUD_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID>
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>
    export ALIBABA_CLOUD_SECURITY_TOKEN=<ALIBABA_CLOUD_SECURITY_TOKEN>

    Windows

    set ALIBABA_CLOUD_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID>
    set ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>
    set ALIBABA_CLOUD_SECURITY_TOKEN=<ALIBABA_CLOUD_SECURITY_TOKEN>
  2. Gunakan kredensial sementara untuk menginisialisasi client.

    const OSS = require("ali-oss");
    
    // Inisialisasi OSS.
    const client = new OSS({
      // Dapatkan ID AccessKey dari variabel lingkungan.
      accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
      // Dapatkan Rahasia AccessKey dari variabel lingkungan.
      accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
      // Dapatkan token STS dari variabel lingkungan.
      stsToken: process.env.ALIBABA_CLOUD_SECURITY_TOKEN
    });
    
    // listBuckets
    const buckets = await client.listBuckets();
    console.log(buckets);

Metode 3: Gunakan RAMRoleARN

Metode ini berbasis token STS. Dengan menentukan Nama Sumber Daya Alibaba Cloud (ARN) dari peran RAM, tool Credentials mendapatkan token STS dari STS. Anda juga dapat memberikan nilai pada policy untuk lebih membatasi izin peran RAM tersebut.

Inisialisasi penyedia kredensial dengan pasangan AccessKey dan RAMRoleARN untuk menyelesaikan inisialisasi client.

const Credential = require("@alicloud/credentials");
const OSS = require("ali-oss");

// Inisialisasi client Credentials dengan RamRoleArn.
const credentialsConfig = new Credential.Config({
  // Jenis kredensial.
  type: "ram_role_arn",
  // Dapatkan ID AccessKey dari variabel lingkungan.
  accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
  // Dapatkan Rahasia AccessKey dari variabel lingkungan.
  accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
  // ARN dari peran RAM yang akan diasumsikan. Contoh: acs:ram::123456789012****:role/adminrole. Anda dapat mengatur roleArn menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN.
  roleArn: '<RoleArn>',
  // Nama sesi peran. Anda dapat mengatur RoleSessionName menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME.
  roleSessionName: '<RoleSessionName>',
  // Kebijakan akses yang menentukan set izin yang lebih kecil. Parameter ini opsional. Contoh: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
  // policy: '<Policy>',
  roleSessionExpiration: 3600
});
const credentialClient = new Credential.default(credentialsConfig);
const credential = await credentialClient.getCredential();

// Inisialisasi OSS.
const client = new OSS({
  accessKeyId:credential.accessKeyId,
  accessKeySecret: credential.accessKeySecret,
  stsToken: credential.securityToken,
  refreshSTSTokenInterval: 0, // Objek Credential mengontrol pembaruan accessKeyId, accessKeySecret, dan stsToken.
  refreshSTSToken: async () => {
    const { accessKeyId, accessKeySecret, securityToken } = await credentialClient.getCredential();
    return {
      accessKeyId,
      accessKeySecret,
      stsToken: securityToken,
    };
  }
});

// listBuckets
const buckets = await client.listBuckets();
console.log( buckets);

Metode 4: Dapatkan peran RAM dari metadata instans ECS dalam mode standar

Metode ini berbasis token STS. Tool Credentials secara otomatis mendapatkan peran RAM yang dilampirkan pada instans ECS. Kemudian, tool tersebut memanggil ECS Meta Data Server untuk mengambil token STS dan menggunakan token tersebut untuk menginisialisasi client.

const Credential = require("@alicloud/credentials");
const OSS = require("ali-oss");

// Inisialisasi client Credentials.
const credentialsConfig = new Credential.Config({
  // Jenis kredensial.
  type: "ecs_ram_role",
  // Opsional. Nama peran ECS. Jika Anda tidak menentukan parameter ini, nama peran akan diambil secara otomatis. Kami menyarankan agar Anda menentukan parameter ini untuk mengurangi jumlah permintaan. Anda dapat mengatur roleName menggunakan variabel lingkungan ALIBABA_CLOUD_ECS_METADATA.
  roleName: '<RoleName>'
});
const credentialClient = new Credential.default(credentialsConfig);

const { accessKeyId, accessKeySecret, securityToken } = await credentialClient.getCredential();

// Inisialisasi client OSS.
const client = new OSS({
  accessKeyId,
  accessKeySecret,
  stsToken: securityToken,
  refreshSTSTokenInterval: 0, // Objek Credential mengontrol pembaruan accessKeyId, accessKeySecret, dan stsToken.
  refreshSTSToken: async () => {
    const { accessKeyId, accessKeySecret, securityToken } = await credentialClient.getCredential();
    
    return {
      accessKeyId,
      accessKeySecret,
      stsToken: securityToken,
    };
  }
});

// listBuckets
const buckets = await client.listBuckets();
console.log(buckets);

Metode 5: Gunakan OIDCRoleArn

Saat Anda mengonfigurasi peran RAM untuk node pekerja di Container Service for Kubernetes, aplikasi dalam pod pada node tersebut dapat memperoleh token STS dari peran terkait melalui Meta Data Server, mirip dengan aplikasi yang dideploy pada ECS. Namun, pendekatan ini tidak aman jika Anda menjalankan aplikasi tidak tepercaya pada kluster kontainer, seperti aplikasi dari pelanggan yang kode sumbernya tidak tersedia bagi Anda. Anda harus mencegah aplikasi tersebut memperoleh token STS dari instance RAM role yang terkait dengan node pekerja. Untuk mengatasi hal ini, Anda dapat menggunakan fitur RAM Roles for Service Accounts (RRSA). RRSA memungkinkan aplikasi tidak tepercaya memperoleh token STS secara aman dengan izin minimum di tingkat aplikasi, sehingga mencegah risiko keamanan terhadap sumber daya cloud Anda. Untuk setiap pod aplikasi, kluster kontainer Alibaba Cloud membuat dan memasang file token OpenID Connect (OIDC) akun layanan yang sesuai serta menyuntikkan informasi konfigurasi ke dalam variabel lingkungan. Tool Credentials mengambil informasi konfigurasi ini dan memanggil operasi STS AssumeRoleWithOIDC untuk memperoleh token STS dari peran yang dilampirkan. Untuk informasi selengkapnya, lihat Isolasi izin Pod berdasarkan RRSA.

Inisialisasi client dengan mengonfigurasi peran RAM OIDC sebagai kredensial akses.

const OSS = require("ali-oss");
const Credential = require("@alicloud/credentials");

const credentialsConfig = new Credential.Config({
  // Jenis kredensial.
  type: "oidc_role_arn",
  // ARN dari peran RAM. Anda dapat mengatur roleArn menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN.
  roleArn: '<RoleArn>',
  // ARN dari penyedia OIDC. Anda dapat mengatur oidcProviderArn menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_PROVIDER_ARN.
  oidcProviderArn: '<OidcProviderArn>',
  // Jalur ke file token OIDC. Anda dapat mengatur oidcTokenFilePath menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_TOKEN_FILE.
  oidcTokenFilePath: '<OidcTokenFilePath>',
  // Nama sesi peran. Anda dapat mengatur roleSessionName menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME.
  roleSessionName: '<RoleSessionName>',
  // Kebijakan akses yang menentukan set izin yang lebih kecil. Parameter ini opsional. Contoh: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
  // policy: "<Policy>",
  // Atur waktu kedaluwarsa sesi.
  roleSessionExpiration: 3600
});
const credentialClient = new Credential.default(credentialsConfig);
const { accessKeyId, accessKeySecret, securityToken } = await credentialClient.getCredential();
const client = new OSS({
  accessKeyId,
  accessKeySecret,
  stsToken: securityToken,
  refreshSTSTokenInterval: 0, // Objek Credential mengontrol pembaruan accessKeyId, accessKeySecret, dan stsToken.
  refreshSTSToken: async () => {
    const { accessKeyId, accessKeySecret, securityToken } = await credentialClient.getCredential();
    
    return {
      accessKeyId,
      accessKeySecret,
      stsToken: securityToken,
    };
  }
});
const buckets = await client.listBuckets();

console.log(buckets);

Metode 6: Gunakan CredentialsURI

Jika aplikasi Anda perlu memperoleh kredensial Alibaba Cloud dari sistem eksternal untuk manajemen kredensial yang fleksibel dan akses tanpa kunci, Anda dapat menginisialisasi penyedia kredensial menggunakan CredentialsURI. Metode ini berbasis token STS. Tool Credentials mengambil token STS dari URI yang Anda sediakan dan menginisialisasi client kredensial. Metode ini tidak memerlukan Anda menyediakan pasangan AccessKey atau token STS, sehingga menghilangkan risiko pemeliharaan manual. Perhatikan bahwa layanan backend yang menyediakan respons CredentialsURI harus mengimplementasikan logika auto-refresh token STS untuk memastikan aplikasi Anda selalu dapat memperoleh kredensial yang valid.

  1. Agar tool Credentials dapat mengurai dan menggunakan token STS dengan benar, respons dari URI harus mengikuti protokol berikut:

    • Kode status respons: 200

    • Struktur badan respons:

      {
        "Code": "Success",
        "AccessKeySecret": "AccessKeySecret",
        "AccessKeyId": "AccessKeyId",
        "Expiration": "2021-09-26T03:46:38Z",
        "SecurityToken": "SecurityToken"
      }
  2. Inisialisasi client dengan mengonfigurasi CredentialsURI sebagai kredensial akses.

    const OSS = require("ali-oss");
    const Credential = require("@alicloud/credentials");
    
    // Inisialisasi client Credentials menggunakan URI kredensial.
    const credentialsConfig = new Credential.Config({
      // Jenis kredensial.
      type: "credentials_uri",
      // URI tempat memperoleh kredensial. Formatnya adalah http://local_or_remote_uri/. Anda dapat mengatur credentialsUri menggunakan variabel lingkungan ALIBABA_CLOUD_CREDENTIALS_URI.
      credentialsURI: '<CredentialsUri>'
    });
    const credentialClient = new Credential.default(credentialsConfig);
    const credential = await credentialClient.getCredential();
    
    // Inisialisasi OSS.
    const client = new OSS({
      accessKeyId: credential.accessKeyId,
      accessKeySecret: credential.accessKeySecret,
      stsToken: credential.securityToken,
      refreshSTSTokenInterval: 0, // Objek Credential mengontrol pembaruan accessKeyId, accessKeySecret, dan stsToken.
      refreshSTSToken: async () => {
        const { accessKeyId, accessKeySecret, securityToken } = await credentialClient.getCredential();
    
        return {
          accessKeyId,
          accessKeySecret,
          stsToken: securityToken,
        };
      }
    });
    
    // listBuckets
    const buckets = await client.listBuckets();
    console.log(buckets);
    

Apa yang harus dilakukan selanjutnya

Setelah Anda menginisialisasi penyedia kredensial, Anda dapat membuat instance OSSClient. Untuk informasi selengkapnya, lihat Inisialisasi (Node.js SDK).