全部产品
Search
文档中心

Tablestore:Konfigurasikan Kredensial Akses

更新时间:Nov 10, 2025

Tablestore mendukung berbagai jenis Kredensial akses. Pilih Kredensial akses yang sesuai berdasarkan kebutuhan autentikasi dan otorisasi dalam skenario bisnis Anda.

Pemilihan kredensial akses

Tablestore mendukung jenis kredensial akses seperti AccessKey (AK) dan token STS, serta berbagai metode konfigurasi. Tabel berikut menjelaskan skenario yang sesuai dan dukungan SDK untuk metode konfigurasi yang berbeda.

Metode konfigurasi kredensial akses

Skenario

Pasangan AccessKey atau token STS diperlukan

Kredensial Implementasi Dasar

Periode validitas kredensial

Metode rotasi atau pembaruan kredensial

Dukungan SDK

Gunakan pasangan AccessKey dari Pengguna RAM

Aplikasi diterapkan dan dijalankan dalam lingkungan yang aman dan stabil yang tidak rentan terhadap serangan eksternal dan perlu mengakses layanan cloud untuk jangka waktu panjang tanpa rotasi kredensial yang sering

Ya

AK

Jangka panjang

Rotasi manual

Java, Go, Python, Node.js, .NET, PHP

Gunakan kredensial akses sementara STS

Aplikasi diterapkan dan dijalankan dalam lingkungan yang tidak tepercaya, dalam hal ini Anda ingin mengelola periode validitas kredensial dan sumber daya yang dapat diakses

Ya

STS Token

Sementara

Pembaruan manual

Java, Go, Python, Node.js, PHP

Gunakan RAMRoleARN

Aplikasi memerlukan otorisasi untuk mengakses layanan cloud, seperti akses lintas akun ke layanan cloud

Ya

STS Token

Sementara

Pembaruan otomatis

Java

Gunakan ECSRAMRole

Aplikasi diterapkan dan dijalankan pada instans Elastic Compute Service (ECS), instans kontainer elastis, dan node pekerja Container Service for Kubernetes (ACK)

Tidak

STS Token

Sementara

Pembaruan otomatis

Java

Gunakan OIDCRoleARN

Aplikasi yang tidak tepercaya diterapkan dan dijalankan pada node pekerja Container Service for Kubernetes

Tidak

STS Token

Sementara

Pembaruan otomatis

Java

Gunakan parameter Credentials dalam konteks Function Compute

Fungsi aplikasi Anda diterapkan dan dijalankan di Function Compute

Tidak

STS Token

Sementara

Tidak perlu diperbarui

Java, Python

Gunakan CredentialsURI

Aplikasi memerlukan kredensial akses dari sistem eksternal

Tidak

STS Token

Sementara

Pembaruan otomatis

Java

Gunakan pasangan AccessKey yang berotasi secara otomatis

Aplikasi diterapkan dan dijalankan dalam lingkungan di mana pasangan AccessKey memiliki risiko tinggi kebocoran dan memerlukan rotasi kredensial akses yang sering

Tidak

AK

Jangka panjang

Rotasi otomatis

Java

Gunakan kredensial akses kustom

Jika tidak ada metode sebelumnya yang memenuhi kebutuhan Anda, Anda dapat menggunakan metode kustom untuk mendapatkan kredensial akses

Kustom

Kustom

Kustom

Kustom

Java

Metode konfigurasi kredensial akses

Gunakan pasangan AccessKey dari pengguna RAM

Konfigurasikan kredensial akses menggunakan pasangan AccessKey (ID AccessKey dan Rahasia AccessKey) dari pengguna RAM. Metode ini mengharuskan Anda untuk secara manual memelihara pasangan AccessKey, yang menimbulkan risiko keamanan dan meningkatkan kompleksitas pemeliharaan.

Penting

Akun Alibaba Cloud memiliki izin penuh atas sumber daya dalam akun tersebut. Kebocoran pasangan AccessKey akun Alibaba Cloud menimbulkan ancaman keamanan yang kritis. Oleh karena itu, kami menyarankan Anda menggunakan pasangan AccessKey dari pengguna RAM dengan izin minimum yang diperlukan. Untuk informasi tentang cara mendapatkan pasangan AccessKey dari pengguna RAM, lihat Gunakan Pasangan AccessKey dari Pengguna RAM untuk Mengakses Tablestore.

Saat menggunakan metode ini, Anda dapat mengonfigurasi kredensial menggunakan variabel lingkungan atau kredensial statis. Berikut adalah penjelasan konfigurasi terperinci:

Variabel lingkungan

  1. Konfigurasikan variabel lingkungan. Setelah konfigurasi selesai, restart atau segarkan lingkungan kompilasi dan runtime Anda, termasuk IDE, antarmuka baris perintah, aplikasi desktop lainnya, dan layanan latar belakang untuk memastikan bahwa variabel lingkungan sistem terbaru berhasil dimuat.

    Linux
    1. Jalankan perintah berikut di antarmuka baris perintah untuk menambahkan pengaturan variabel lingkungan ke file ~/.bashrc.

      echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
      echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
    2. Jalankan perintah berikut untuk memungkinkan perubahan berlaku:

      source ~/.bashrc
    3. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan berlaku:

      echo $TABLESTORE_ACCESS_KEY_ID
      echo $TABLESTORE_ACCESS_KEY_SECRET
    macOS
    1. Jalankan perintah berikut di terminal untuk memeriksa jenis Shell default.

      echo $SHELL
    2. Lakukan operasi berdasarkan jenis Shell default.

      Zsh
      1. Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file ~/.zshrc.

        echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
        echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
      2. Jalankan perintah berikut untuk memungkinkan perubahan berlaku:

        source ~/.zshrc
      3. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan berlaku:

        echo $TABLESTORE_ACCESS_KEY_ID
        echo $TABLESTORE_ACCESS_KEY_SECRET
      Bash
      1. Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file ~/.bash_profile.

        echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile
        echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile
      2. Jalankan perintah berikut untuk memungkinkan perubahan berlaku:

        source ~/.bash_profile
      3. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan berlaku:

        echo $TABLESTORE_ACCESS_KEY_ID
        echo $TABLESTORE_ACCESS_KEY_SECRET
    Windows
    CMD
    1. Jalankan perintah berikut di CMD untuk mengatur variabel lingkungan.

      setx TABLESTORE_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
      setx TABLESTORE_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
    2. Setelah me-restart CMD, jalankan perintah berikut untuk memeriksa apakah variabel lingkungan berlaku:

      echo %TABLESTORE_ACCESS_KEY_ID%
      echo %TABLESTORE_ACCESS_KEY_SECRET%
    PowerShell
    1. Jalankan perintah berikut di PowerShell:

      [Environment]::SetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
      [Environment]::SetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
    2. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan berlaku:

      [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
      [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
  2. Gunakan variabel lingkungan untuk melewatkan kredensial.

    import com.alicloud.openservices.tablestore.core.auth.CredentialsProviderFactory;
    import com.alicloud.openservices.tablestore.core.auth.EnvironmentVariableCredentialsProvider;
    
    public class AkDemoTest {
        public static void main(String[] args) throws Exception {
            {
                // Contoh 1: Dapatkan kredensial akses dari variabel lingkungan.
                EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
                // Gunakan credentialsProvider untuk melakukan operasi selanjutnya.
            }
            {
                // Contoh 2: Dapatkan ID AccessKey dan Rahasia AccessKey dari variabel lingkungan.
                final String accessKeyId = System.getenv("TABLESTORE_ACCESS_KEY_ID");
                final String accessKeySecret = System.getenv("TABLESTORE_ACCESS_KEY_SECRET");
                // Gunakan ID AccessKey dan Rahasia AccessKey untuk melakukan operasi selanjutnya.
            }
        }
    }
    accessKeyId := os.Getenv("TABLESTORE_ACCESS_KEY_ID")
    accessKeySecret := os.Getenv("TABLESTORE_ACCESS_KEY_SECRET")
    # -*- coding: utf-8 -*-
    import os
    
    access_key_id = os.getenv("TABLESTORE_ACCESS_KEY_ID")
    access_key_secret = os.getenv("TABLESTORE_ACCESS_KEY_SECRET")
    var accessKeyId = process.env.TABLESTORE_ACCESS_KEY_ID;
    var secretAccessKey = process.env.TABLESTORE_ACCESS_KEY_SECRET;
    // Dapatkan kredensial akses dari variabel lingkungan.
    var AccessKeyId = Environment.GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID");
    var AccessKeySecret = Environment.GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET");
    $accessKeyId = getenv('TABLESTORE_ACCESS_KEY_ID');
    $accessKeySecret = getenv('TABLESTORE_ACCESS_KEY_SECRET');

Kredensial statis

Anda dapat merujuk kredensial dengan menentukan variabel dalam kode Anda. Dalam lingkungan runtime, variabel dilewatkan oleh nilai kredensial aktual dari variabel lingkungan, file konfigurasi, atau sumber data eksternal lainnya.

Prosedur berikut menjelaskan cara menggunakan kredensial statis di SDK Tablestore umum dengan file konfigurasi sebagai contoh.

  1. Buat file konfigurasi bernama config.ini.

    [configName]
    TABLESTORE_ACCESS_KEY_ID = your_access_key_id
    TABLESTORE_ACCESS_KEY_SECRET = your_access_key_secret
  2. Gunakan file konfigurasi untuk melewatkan kredensial.

    import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider;
    import com.alicloud.openservices.tablestore.core.auth.DefaultCredentialProvider;
    import java.io.FileInputStream;
    import java.util.Properties;
    
    public class AkDemoTest {
        public static void main(String[] args) throws Exception {
            Properties properties = new Properties();
            // Tentukan jalur file config.ini. Gunakan jalur aktual.
            String configFilePath = "config.ini";
    
            // Baca file konfigurasi.
            FileInputStream input = new FileInputStream(configFilePath);
            properties.load(input);
            input.close();
    
            // Dapatkan pasangan AccessKey dari file konfigurasi.
            String accessKeyId = properties.getProperty("TABLESTORE_ACCESS_KEY_ID");
            String accessKeySecret = properties.getProperty("TABLESTORE_ACCESS_KEY_SECRET");
    
            CredentialsProvider credentialsProvider = new DefaultCredentialProvider(accessKeyId, accessKeySecret);
    
            // Gunakan credentialsProvider untuk operasi selanjutnya.
        }
    }
    // Baca file konfigurasi. Gunakan jalur aktual.
    config, err := ini.Load("config.ini")
    if err != nil {
        fmt.Println("Gagal membaca file konfigurasi:", err)
    }
    
    // Dapatkan ID AccessKey dan Rahasia AccessKey dari file konfigurasi.
    access_key_id := config.Section("configName").Key("TABLESTORE_ACCESS_KEY_ID").String()
    access_key_secret := config.Section("configName").Key("TABLESTORE_ACCESS_KEY_SECRET").String()
    # -*- coding: utf-8 -*-
    import configparser
    
    # Baca file konfigurasi
    config = configparser.ConfigParser()
    # Asumsikan bahwa config.ini berada di direktori yang sama dengan skrip. Gunakan jalur aktual.
    config.read('config.ini')
    
    # Dapatkan ID AccessKey dan Rahasia AccessKey dari file konfigurasi.
    access_key_id = config.get('configName', 'TABLESTORE_ACCESS_KEY_ID')
    access_key_secret = config.get('configName', 'TABLESTORE_ACCESS_KEY_SECRET')
    try {
        // Baca file konfigurasi. Asumsikan bahwa config.ini berada di direktori yang sama dengan skrip. Gunakan jalur aktual.
        $config = parse_ini_file('config.ini');
        // Dapatkan ID AccessKey dan Rahasia AccessKey.
        $accessKeyId = $config['TABLESTORE_ACCESS_KEY_ID'];
        $accessKeySecret = $config['TABLESTORE_ACCESS_KEY_SECRET'];
    }catch (Exception $e) {
        printf($e->getMessage() . "\n");
        return;
    }

Gunakan kredensial akses sementara STS

Konfigurasikan kredensial akses menggunakan kredensial akses sementara (ID AccessKey, Rahasia AccessKey, dan Token Keamanan) yang diperoleh dari STS. Metode ini mengharuskan Anda untuk secara manual memelihara token STS, yang menimbulkan risiko keamanan dan meningkatkan kompleksitas pemeliharaan. Jika Anda ingin mengakses Tablestore beberapa kali, Anda harus secara manual menyegarkan token STS. Untuk informasi tentang cara mendapatkan kredensial akses sementara STS, lihat Gunakan Kredensial Akses Sementara yang Diperoleh dari STS untuk Mengakses Tablestore.

Saat menggunakan metode ini, Anda dapat mengonfigurasi kredensial akses sementara menggunakan variabel lingkungan atau kredensial statis. Berikut adalah penjelasan konfigurasi terperinci:

Variabel lingkungan

  1. Konfigurasikan variabel lingkungan. Setelah konfigurasi selesai, restart atau segarkan lingkungan kompilasi dan runtime Anda, termasuk IDE, antarmuka baris perintah, aplikasi desktop lainnya, dan layanan latar belakang untuk memastikan bahwa variabel lingkungan sistem terbaru berhasil dimuat.

    Linux
    1. Jalankan perintah berikut di antarmuka baris perintah untuk menambahkan pengaturan variabel lingkungan ke file ~/.bashrc.

      echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_STS_ACCESS_KEY_ID'" >> ~/.bashrc
      echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_STS_ACCESS_KEY_SECRET'" >> ~/.bashrc
      echo "export TABLESTORE_SESSION_TOKEN='YOUR_STS_TOKEN'" >> ~/.bashrc
    2. Jalankan perintah berikut untuk memungkinkan perubahan berlaku:

      source ~/.bashrc
    3. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan berlaku:

      echo $TABLESTORE_ACCESS_KEY_ID
      echo $TABLESTORE_ACCESS_KEY_SECRET
      echo $TABLESTORE_SESSION_TOKEN
    macOS
    1. Jalankan perintah berikut di terminal untuk memeriksa jenis Shell default.

      echo $SHELL
    2. Lakukan operasi berdasarkan jenis Shell default.

      Zsh
      1. Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file ~/.zshrc.

        echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_STS_ACCESS_KEY_ID'" >> ~/.zshrc
        echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_STS_ACCESS_KEY_SECRET'" >> ~/.zshrc
        echo "export TABLESTORE_SESSION_TOKEN='YOUR_STS_TOKEN'" >> ~/.zshrc
      2. Jalankan perintah berikut untuk memungkinkan perubahan berlaku:

        source ~/.zshrc
      3. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan berlaku:

        echo $TABLESTORE_ACCESS_KEY_ID
        echo $TABLESTORE_ACCESS_KEY_SECRET
        echo $TABLESTORE_SESSION_TOKEN
      Bash
      1. Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file ~/.bash_profile.

        echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_STS_ACCESS_KEY_ID'" >> ~/.bash_profile
        echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_STS_ACCESS_KEY_SECRET'" >> ~/.bash_profile
        echo "export TABLESTORE_SESSION_TOKEN='YOUR_STS_TOKEN'" >> ~/.bash_profile
      2. Jalankan perintah berikut untuk memungkinkan perubahan berlaku:

        source ~/.bash_profile
      3. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan berlaku:

        echo $TABLESTORE_ACCESS_KEY_ID
        echo $TABLESTORE_ACCESS_KEY_SECRET
        echo $TABLESTORE_SESSION_TOKEN
    Windows
    CMD
    1. Jalankan perintah berikut di CMD untuk mengatur variabel lingkungan.

      setx TABLESTORE_ACCESS_KEY_ID "YOUR_STS_ACCESS_KEY_ID"
      setx TABLESTORE_ACCESS_KEY_SECRET "YOUR_STS_ACCESS_KEY_SECRET"
      setx TABLESTORE_SESSION_TOKEN "YOUR_STS_TOKEN"
    2. Setelah me-restart CMD, jalankan perintah berikut untuk memeriksa apakah variabel lingkungan berlaku:

      echo %TABLESTORE_ACCESS_KEY_ID%
      echo %TABLESTORE_ACCESS_KEY_SECRET%
      echo %TABLESTORE_SESSION_TOKEN%
    PowerShell
    1. Jalankan perintah berikut di PowerShell:

      [Environment]::SetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", "YOUR_STS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
      [Environment]::SetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", "YOUR_STS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
      [Environment]::SetEnvironmentVariable("TABLESTORE_SESSION_TOKEN", "YOUR_STS_TOKEN", [EnvironmentVariableTarget]::User)
    2. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan berlaku:

      [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
      [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
      [Environment]::GetEnvironmentVariable("TABLESTORE_SESSION_TOKEN", [EnvironmentVariableTarget]::User)
  2. Gunakan variabel lingkungan untuk melewatkan kredensial.

    import com.alicloud.openservices.tablestore.core.auth.CredentialsProviderFactory;
    import com.alicloud.openservices.tablestore.core.auth.EnvironmentVariableCredentialsProvider;
    
    public class StsDemoTest {
        public static void main(String[] args) throws Exception {
            {
                // Contoh 1: Dapatkan kredensial akses dari variabel lingkungan.
                EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
                // Gunakan credentialsProvider untuk operasi selanjutnya.
            }
            {
                // Contoh 2: Dapatkan ID AccessKey, Rahasia AccessKey, dan token keamanan dari variabel lingkungan.
                final String accessKeyId = System.getenv("TABLESTORE_ACCESS_KEY_ID");
                final String accessKeySecret = System.getenv("TABLESTORE_ACCESS_KEY_SECRET");
                final String securityToken = System.getenv("TABLESTORE_SESSION_TOKEN");
                // Gunakan ID AccessKey, Rahasia AccessKey, dan token keamanan untuk melakukan operasi selanjutnya.
            }
        }
    }
    accessKeyId := os.Getenv("TABLESTORE_ACCESS_KEY_ID")
    accessKeySecret := os.Getenv("TABLESTORE_ACCESS_KEY_SECRET")
    securityToken := os.Getenv("TABLESTORE_SESSION_TOKEN")
    # -*- coding: utf-8 -*-
    import os
    
    access_key_id = os.getenv("TABLESTORE_ACCESS_KEY_ID")
    access_key_secret = os.getenv("TABLESTORE_ACCESS_KEY_SECRET")
    sts_token = os.getenv("TABLESTORE_SESSION_TOKEN")
    var accessKeyId = process.env.TABLESTORE_ACCESS_KEY_ID;
    var secretAccessKey = process.env.TABLESTORE_ACCESS_KEY_SECRET;
    var stsToken = process.env.TABLESTORE_SESSION_TOKEN;
    $accessKeyId = getenv('TABLESTORE_ACCESS_KEY_ID');
    $accessKeySecret = getenv('TABLESTORE_ACCESS_KEY_SECRET');
    $securityToken = getenv('TABLESTORE_SESSION_TOKEN');

Kredensial statis

Anda dapat merujuk kredensial dengan menentukan variabel dalam kode Anda. Dalam lingkungan runtime, variabel dilewatkan oleh nilai kredensial aktual dari variabel lingkungan, file konfigurasi, atau sumber data eksternal lainnya.

Prosedur berikut menjelaskan cara menggunakan kredensial statis di SDK Tablestore umum dengan file konfigurasi sebagai contoh.

  1. Buat file konfigurasi bernama config.ini.

    [configName]
    TABLESTORE_ACCESS_KEY_ID = your_sts_access_key_id
    TABLESTORE_ACCESS_KEY_SECRET = your_sts_access_key_secret
    TABLESTORE_SESSION_TOKEN = your_sts_token
  2. Gunakan file konfigurasi untuk melewatkan kredensial.

    import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider;
    import com.alicloud.openservices.tablestore.core.auth.DefaultCredentialProvider;
    import java.io.FileInputStream;
    import java.util.Properties;
    
    public class StsDemoTest {
        public static void main(String[] args) throws Exception {
            Properties properties = new Properties();
            // Tentukan jalur file config.ini. Gunakan jalur aktual.
            String configFilePath = "config.ini";
    
            // Baca file konfigurasi.
            FileInputStream input = new FileInputStream(configFilePath);
            properties.load(input);
            input.close();
    
            // Dapatkan pasangan AccessKey dan token keamanan dari file konfigurasi.
            String accessKeyId = properties.getProperty("TABLESTORE_ACCESS_KEY_ID");
            String accessKeySecret = properties.getProperty("TABLESTORE_ACCESS_KEY_SECRET");
            String securityToken = properties.getProperty("TABLESTORE_SESSION_TOKEN");
    
            CredentialsProvider credentialsProvider = new DefaultCredentialProvider(accessKeyId, accessKeySecret, securityToken);
            // Gunakan credentialsProvider untuk operasi selanjutnya.
        }
    }
    // Baca file konfigurasi. Gunakan jalur aktual.
    config, err := ini.Load("config.ini")
    if err != nil {
        fmt.Println("Gagal membaca file konfigurasi:", err)
    }
    
    // Dapatkan ID AccessKey dan Rahasia AccessKey dari file konfigurasi.
    access_key_id := config.Section("configName").Key("TABLESTORE_ACCESS_KEY_ID").String()
    access_key_secret := config.Section("configName").Key("TABLESTORE_ACCESS_KEY_SECRET").String()
    security_token := config.Section("configName").Key("TABLESTORE_SESSION_TOKEN").String()
    # -*- coding: utf-8 -*-
    import configparser
    
    # Baca file konfigurasi
    config = configparser.ConfigParser()
    # Asumsikan bahwa config.ini berada di direktori yang sama dengan skrip. Gunakan jalur aktual.
    config.read('config.ini')
    
    # Dapatkan ID AccessKey dan Rahasia AccessKey dari file konfigurasi.
    access_key_id = config.get('configName', 'TABLESTORE_ACCESS_KEY_ID')
    access_key_secret = config.get('configName', 'TABLESTORE_ACCESS_KEY_SECRET')
    security_token = config.get('configName', 'TABLESTORE_SESSION_TOKEN')
    try {
        // Baca file konfigurasi. Asumsikan bahwa config.ini berada di direktori yang sama dengan skrip. Gunakan jalur aktual.
        $config = parse_ini_file('config.ini');
        // Dapatkan ID AccessKey, Rahasia AccessKey, dan token keamanan.
        $accessKeyId = $config['TABLESTORE_ACCESS_KEY_ID'];
        $accessKeySecret = $config['TABLESTORE_ACCESS_KEY_SECRET'];
        $securityToken = $config['TABLESTORE_SESSION_TOKEN'];
    }catch (Exception $e) {
        printf($e->getMessage() . "\n");
        return;
    }

Gunakan RAMRoleARN

Konfigurasikan kredensial akses menggunakan RAMRoleARN. Logika dasar metode ini adalah menggunakan token STS untuk mengonfigurasi kredensial akses. Dengan menentukan Nama Sumber Daya Alibaba Cloud (ARN) dari peran RAM, alat Kredensial mendapatkan token keamanan dari STS dan secara otomatis menyegarkan token keamanan sebelum sesi berakhir. Anda juga dapat menentukan parameter policy untuk membatasi izin yang diberikan kepada peran RAM. Metode ini mengharuskan Anda untuk menyediakan pasangan AccessKey, yang menimbulkan risiko keamanan dan meningkatkan kompleksitas pemeliharaan. Untuk informasi tentang cara mendapatkan pasangan AccessKey, lihat CreateAccessKey. Untuk informasi tentang cara mendapatkan ARN dari peran RAM, lihat CreateRole.

  1. Tambahkan dependensi untuk kredensial.

    <!-- https://mvnrepository.com/artifact/com.aliyun/credentials-java -->
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>credentials-java</artifactId>
        <version>0.3.4</version>
    </dependency>
  2. Gunakan pasangan AccessKey dan ARN dari Peran RAM sebagai kredensial akses.

    import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider;
    import com.alicloud.openservices.tablestore.core.auth.DefaultCredentials;
    import com.alicloud.openservices.tablestore.core.auth.ServiceCredentials;
    import com.aliyun.credentials.models.CredentialModel;
    
    public class RamRoleArnAkDemoTest {
    
        public static void main(String[] args) {
    
            com.aliyun.credentials.models.Config config = new com.aliyun.credentials.models.Config();
            // Setel tipe kredensial ke ram_role_arn.
            config.setType("ram_role_arn");
            // Tentukan ARN dari peran RAM yang ingin diasumsikan oleh pengguna RAM. Anda dapat menentukan ARN dari peran RAM menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN. Contoh: acs:ram::123456789012****:role/adminrole.
            config.setRoleArn("<RoleArn>");
            // Dapatkan ID AccessKey dari variabel lingkungan.
            config.setAccessKeyId(System.getenv().get("TABLESTORE_ACCESS_KEY_ID"));
            // Dapatkan Rahasia AccessKey dari variabel lingkungan.
            config.setAccessKeySecret(System.getenv().get("TABLESTORE_ACCESS_KEY_SECRET"));
            // Tentukan nama sesi dari peran RAM.
            config.setRoleName("roleSessionName");
            // (Opsional) Tentukan izin terbatas untuk peran RAM. Contoh: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
            config.setPolicy("<Policy>");
            // (Opsional) Tentukan periode validitas sesi peran.
            config.setRoleSessionExpiration(3600);
    
            final com.aliyun.credentials.Client credentialsClient = new com.aliyun.credentials.Client(config);
    
            CredentialsProvider credentialsProvider = new CredentialsProvider(){
                @Override
                public void setCredentials(ServiceCredentials credentials) {
                }
    
                @Override
                public ServiceCredentials getCredentials() {
                    CredentialModel credential = credentialsClient.getCredential();
                    return  new DefaultCredentials(credential.getAccessKeyId(), credential.getAccessKeySecret(), credential.getSecurityToken());
                }
            };
            // Gunakan credentialsProvider untuk melakukan operasi selanjutnya.
        }
    }

Gunakan ECSRAMRole

Gunakan peran RAM ECS untuk mengonfigurasi kredensial akses. Logika dasar metode ini adalah menggunakan token STS. Peran RAM ECS memungkinkan Anda mengaitkan peran dengan instance ECS, instance ECI, atau node pekerja Container Service for Kubernetes untuk secara otomatis menyegarkan token STS pada instance tersebut. Metode ini tidak memerlukan Anda untuk menyediakan pasangan AccessKey atau token STS, yang menghilangkan risiko yang muncul saat Anda secara manual memmemelihara pasangan AccessKey atau token STS. Untuk informasi tentang cara mendapatkan peran RAM ECS, lihat CreateRole.

  1. Tambahkan dependensi kredensial.

    <!-- https://mvnrepository.com/artifact/com.aliyun/credentials-java -->
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>credentials-java</artifactId>
        <version>0.3.4</version>
    </dependency>
  2. Gunakan Peran RAM untuk menyediakan kredensial akses.

    import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider;
    import com.alicloud.openservices.tablestore.core.auth.DefaultCredentials;
    import com.alicloud.openservices.tablestore.core.auth.ServiceCredentials;
    import com.aliyun.credentials.models.CredentialModel;
    
    public class EcsRamRoleDemoTest {
    
        public static void main(String[] args) {
    
            com.aliyun.credentials.models.Config config = new com.aliyun.credentials.models.Config();
            // Atur tipe kredensial menjadi ecs_ram_role. 
            config.setType("ecs_ram_role");
            // (Opsional) Tentukan nama Peran RAM yang dilampirkan ke instance ECS. Jika Anda tidak mengonfigurasi parameter ini, sistem secara otomatis mencari Peran RAM. Kami merekomendasikan agar Anda mengonfigurasi parameter ini untuk mengurangi jumlah permintaan. 
            config.setRoleName("ECSRAMRole");
            //(Opsional) Aktifkan mode penguatan keamanan untuk metadata instance ECS. Kami merekomendasikan agar Anda mengonfigurasi parameter ini untuk meningkatkan keamanan keseluruhan sistem. 
            config.setEnableIMDSv2(true);
    
            final com.aliyun.credentials.Client credentialsClient = new com.aliyun.credentials.Client(config);
    
            CredentialsProvider credentialsProvider = new CredentialsProvider(){
                @Override
                public void setCredentials(ServiceCredentials credentials) {
                }
    
                @Override
                public ServiceCredentials getCredentials() {
                    CredentialModel credential = credentialsClient.getCredential();
                    return  new DefaultCredentials(credential.getAccessKeyId(), credential.getAccessKeySecret(), credential.getSecurityToken());
                }
            };
            // Gunakan credentialsProvider untuk melakukan operasi selanjutnya.
        }
    }

Gunakan OIDCRoleARN

Setelah Anda mengonfigurasi peran RAM untuk node pekerja di Container Service for Kubernetes (ACK), aplikasi dalam pod pada node tersebut dapat memperoleh token STS untuk peran terkait dari layanan metadata (Meta Data Server), mirip dengan aplikasi yang diterapkan pada ECS. Namun, jika aplikasi yang tidak tepercaya diterapkan pada kluster kontainer, seperti aplikasi yang dikirimkan oleh pelanggan Anda yang kode sumbernya tidak tersedia bagi Anda, Anda mungkin tidak ingin mereka memperoleh token STS untuk peran RAM yang terkait dengan instance node pekerja dari layanan metadata. Untuk memastikan keamanan sumber daya cloud, izinkan aplikasi yang tidak tepercaya untuk secara aman memperoleh token STS yang diperlukan, dan meminimalkan izin tingkat aplikasi, Anda dapat menggunakan fitur RAM Roles for Service Account (RRSA). Logika dasar metode ini adalah menggunakan token STS. ACK membuat dan memasang file token OpenID Connect (OIDC) akun layanan yang sesuai untuk pod aplikasi yang berbeda, dan meneruskan informasi konfigurasi terkait ke variabel lingkungan. Alat Kredensial mendapatkan informasi konfigurasi dari variabel lingkungan dan memanggil operasi AssumeRoleWithOIDC dari STS untuk mendapatkan token STS dari peran yang dilampirkan. Metode ini tidak memerlukan pasangan AccessKey atau token STS, menghilangkan risiko yang terkait dengan pengelolaan manual kredensial ini. Untuk informasi lebih lanjut, lihat Gunakan RRSA untuk mengonfigurasi izin RAM untuk ServiceAccount dan menerapkan isolasi izin tingkat pod.

  1. Tambahkan dependensi kredensial.

    <!-- https://mvnrepository.com/artifact/com.aliyun/credentials-java -->
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>credentials-java</artifactId>
        <version>0.3.4</version>
    </dependency>>
  2. Gunakan Peran RAM untuk Penyedia Identitas OIDC untuk menyediakan kredensial akses.

    public class OidcRoleArnDemoTest {
    
        public static void main(String[] args) {
            com.aliyun.credentials.models.Config config = new com.aliyun.credentials.models.Config();
            // Setel tipe kredensial ke oidc_role_arn.
            config.setType("oidc_role_arn");
            // Tentukan ARN dari peran RAM menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN.
            config.setRoleArn("<RoleArn>");
            // Tentukan ARN dari Penyedia Identitas OIDC. Anda dapat memperoleh ARN dari variabel lingkungan ALIBABA_CLOUD_OIDC_PROVIDER_ARN.
            config.setOidcProviderArn("<OidcProviderArn>");
            // Tentukan jalur file token OIDC. Anda dapat memperoleh file token OIDC dari variabel lingkungan ALIBABA_CLOUD_OIDC_TOKEN_FILE.
            config.setOidcTokenFilePath("<OidcTokenFilePath>");
            // Tentukan nama sesi peran. Anda dapat memperoleh nama sesi peran dari variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME.
            config.setRoleSessionName("<RoleSessionName>");
            // (Opsional) Tentukan izin terbatas untuk peran RAM. Contoh: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
            config.setPolicy("<Policy>");
            // Tentukan periode validitas sesi.
            config.setRoleSessionExpiration(3600);
    
            final com.aliyun.credentials.Client credentialsClient = new com.aliyun.credentials.Client(config);
    
            CredentialsProvider credentialsProvider = new CredentialsProvider() {
                @Override
                public void setCredentials(ServiceCredentials credentials) {
                }
    
                @Override
                public ServiceCredentials getCredentials() {
                    CredentialModel credential = credentialsClient.getCredential();
                    return new DefaultCredentials(credential.getAccessKeyId(), credential.getAccessKeySecret(), credential.getSecurityToken());
                }
            };
            // Gunakan credentialsProvider untuk melakukan operasi selanjutnya.
        }
    }

Gunakan Parameter Credentials dalam konteks Function Compute

Gunakan Parameter Credentials dalam konteks Function Compute untuk mengonfigurasi kredensial akses. Logika dasar metode ini adalah menggunakan token Security Token Service (STS). Function Compute memperoleh token STS dengan mengasumsikan peran layanan berdasarkan peran yang dikonfigurasikan untuk fungsi tersebut. Token STS kemudian diteruskan ke aplikasi Anda menggunakan Parameter Credentials dalam konteks. Token STS berlaku selama 36 jam. Anda tidak dapat mengubah periode validitasnya. Waktu eksekusi maksimum sebuah fungsi adalah 24 jam. Oleh karena itu, Anda tidak perlu menyegarkan token STS karena tidak kedaluwarsa saat fungsi dieksekusi. Metode ini tidak memerlukan Anda untuk menyediakan pasangan AccessKey atau token STS, yang menghilangkan risiko yang terkait dengan pengelolaan manual kredensial ini. Untuk informasi lebih lanjut tentang cara memberikan izin Function Compute untuk mengakses Tablestore, lihat Gunakan peran fungsi untuk memberikan izin Function Compute untuk mengakses layanan cloud lainnya.

Implementasi dalam Java

  1. Tambahkan dependensi konteks Function Compute.

    <!-- https://mvnrepository.com/artifact/com.aliyun.fc.runtime/fc-java-core -->
    <dependency>
        <groupId>com.aliyun.fc.runtime</groupId>
        <artifactId>fc-java-core</artifactId>
        <version>1.4.1</version>
    </dependency>
  2. Inisialisasi penyedia kredensial menggunakan Parameter Credentials dalam konteks Function Compute.

    package example;
    
    import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider;
    import com.alicloud.openservices.tablestore.core.auth.DefaultCredentialProvider;
    import com.aliyun.fc.runtime.Context;
    import com.aliyun.fc.runtime.Credentials;
    import com.aliyun.fc.runtime.StreamRequestHandler;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    public class App implements StreamRequestHandler {
    
        @Override
        public void handleRequest(
                InputStream inputStream, OutputStream outputStream, Context context) throws IOException {
    
            // Dapatkan informasi kunci. Sebelum Anda menjalankan fungsi, pastikan bahwa peran telah dikonfigurasikan untuk layanan tempat fungsi tersebut berada dan bahwa peran tersebut diberi izin untuk mengakses Tablestore. Kami merekomendasikan agar Anda menggunakan peran AliyunFCDefaultRole.
            Credentials creds = context.getExecutionCredentials();
    
            // Gunakan kredensial yang diperoleh untuk membuat instance penyedia kredensial.
            CredentialsProvider credentialsProvider = new DefaultCredentialProvider(creds.getAccessKeyId(), creds.getAccessKeySecret(), creds.getSecurityToken());
    
            // Gunakan credentialsProvider untuk melakukan operasi selanjutnya.
    
            outputStream.write(new String("done").getBytes());
        }
    }

Implementasi dalam Python

Gunakan Parameter Credentials dalam konteks Function Compute untuk mendapatkan kredensial akses sementara.

# -*- coding: utf-8 -*-

def handler(event, context):
    # Dapatkan informasi kunci. Sebelum Anda mengeksekusi fungsi, pastikan bahwa peran telah dikonfigurasikan untuk layanan tempat fungsi tersebut berada dan bahwa peran tersebut diberi izin untuk mengakses Tablestore. Kami sarankan Anda menggunakan peran AliyunFCDefaultRole.
    creds = context.credentials

    access_key_id = creds.access_key_id
    access_key_secret = creds.access_key_secret
    security_token = creds.security_token

    # Lakukan operasi selanjutnya.

    return 'success'

Gunakan CredentialsURI

Konfigurasikan kredensial akses menggunakan CredentialsURI. Logika dasar metode ini adalah menggunakan token STS untuk mengonfigurasi kredensial akses. Alat Kredensial memperoleh token STS menggunakan URI yang Anda tentukan untuk menginisialisasi klien kredensial. Metode ini tidak memerlukan pasangan AccessKey atau token STS, menghilangkan risiko yang terkait dengan pengelolaan manual kredensial ini. Layanan backend yang menyediakan respons URI kredensial harus secara otomatis menyegarkan token STS untuk memastikan bahwa aplikasi Anda selalu dapat memperoleh kredensial yang valid.

  1. Untuk memungkinkan Alat Kredensial mem-parsing dan menggunakan token STS dengan benar, URI harus mematuhi protokol respons berikut:

    • Kode status respons: 200

    • Struktur badan respons:

      {
          "Code": "Success",
          "AccessKeySecret": "AccessKeySecret",
          "AccessKeyId": "AccessKeyId",
          "Expiration": "2021-09-26T03:46:38Z",
          "SecurityToken": "SecurityToken"
      }
  2. Tambahkan dependensi kredensial.

    <!-- https://mvnrepository.com/artifact/com.aliyun/credentials-java -->
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>credentials-java</artifactId>
        <version>0.3.4</version>
    </dependency>
  3. Konfigurasikan URI kredensial sebagai kredensial akses.

    import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider;
    import com.alicloud.openservices.tablestore.core.auth.DefaultCredentials;
    import com.alicloud.openservices.tablestore.core.auth.ServiceCredentials;
    import com.aliyun.credentials.models.CredentialModel;
    
    public class CredentialsUriDemoTest {
        public static void main(String[] args) {
    
            com.aliyun.credentials.models.Config config = new com.aliyun.credentials.models.Config();
            // Atur tipe kredensial menjadi credentials_uri.
            config.setType("credentials_uri");
            // Tentukan URI untuk mendapatkan kredensial dalam format http://local_or_remote_uri/.
            config.setCredentialsUri("<local_or_remote_uri>");
    
            final com.aliyun.credentials.Client credentialsClient = new com.aliyun.credentials.Client(config);
    
            CredentialsProvider credentialsProvider = new CredentialsProvider() {
                @Override
                public void setCredentials(ServiceCredentials credentials) {
                }
    
                @Override
                public ServiceCredentials getCredentials() {
                    CredentialModel credential = credentialsClient.getCredential();
                    return new DefaultCredentials(credential.getAccessKeyId(), credential.getAccessKeySecret(), credential.getSecurityToken());
                }
            };
            // Gunakan credentialsProvider untuk melakukan operasi selanjutnya.
        }
    }

Gunakan pasangan AccessKey yang berputar secara otomatis

Konfigurasikan kredensial akses menggunakan kunci klien. Setelah Anda menggunakan kunci klien, Key Management Service (KMS) dapat secara otomatis dan teratur memutar pasangan AccessKey dari pengguna RAM yang dikelola dan secara dinamis mengubah pasangan AccessKey statis dari pengguna RAM. Ini mengurangi risiko kebocoran pasangan AccessKey. KMS juga mendukung pemutaran segera untuk dengan cepat menonaktifkan pasangan AccessKey yang bocor. Ini menghilangkan kebutuhan untuk secara manual memelihara pasangan AccessKey dan mengurangi risiko keamanan serta kompleksitas pemeliharaan.

  1. Tambahkan dependensi klien kredensial.

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>alibabacloud-secretsmanager-client</artifactId>
        <version>1.3.7</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-core</artifactId>
      <version>4.7.0</version>
    </dependency>
  2. Buat file konfigurasi bernama secretsmanager.properties.

    # Atur tipe kredensial menjadi client_key.
    credentials_type=client_key
    
    # Tentukan kata sandi dekripsi kunci klien. Anda dapat memperoleh kata sandi dekripsi dari variabel lingkungan atau file konfigurasi.
    client_key_password_from_env_variable=<your client key private key password environment variable name>
    client_key_password_from_file_path=<your client key private key password file path>
    
    # Tentukan jalur file kunci privat dari kunci klien.
    client_key_private_key_path=<your client key private key file path>
    
    # Tentukan ID wilayah tempat Anda ingin menggunakan KMS.
    cache_client_region_id=[{"regionId":"<regionId>"}]
  3. Gunakan file konfigurasi untuk melewatkan kredensial.

    import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider;
    import com.alicloud.openservices.tablestore.core.auth.DefaultCredentials;
    import com.alicloud.openservices.tablestore.core.auth.ServiceCredentials;
    import com.aliyuncs.kms.secretsmanager.client.SecretCacheClient;
    import com.aliyuncs.kms.secretsmanager.client.SecretCacheClientBuilder;
    import com.aliyuncs.kms.secretsmanager.client.exception.CacheSecretException;
    import com.aliyuncs.kms.secretsmanager.client.model.SecretInfo;
    import org.codehaus.jettison.json.JSONException;
    import org.codehaus.jettison.json.JSONObject;
    
    public class ClientKeyDemoTest {
    
        public static void main(String[] args) throws CacheSecretException {
            final SecretCacheClient client = SecretCacheClientBuilder.newClient();
            CredentialsProvider credentialsProvider = new CredentialsProvider() {
                @Override
                public void setCredentials(ServiceCredentials credentials) {
                }
    
                @Override
                public ServiceCredentials getCredentials() {
                    try {
                        SecretInfo secretInfo = client.getSecretInfo("<secretName>");
                        JSONObject jsonObject = new JSONObject(secretInfo.getSecretValue());
    
                        String accessKeyId = jsonObject.getString("AccessKeyId");
                        String accessKeySecret = jsonObject.getString("AccessKeySecret");
    
                        return new DefaultCredentials(accessKeyId, accessKeySecret);
                    } catch (CacheSecretException | JSONException e) {
                        return null;
                    }
                }
            };
            // Gunakan credentialsProvider untuk melakukan operasi selanjutnya.
        }
    }

Gunakan kredensial akses kustom

Jika tidak ada metode sebelumnya yang memenuhi kebutuhan Anda, Anda dapat menentukan metode kustom untuk mendapatkan kredensial akses dengan memanggil operasi Credential Providers. Jika implementasi dasar didasarkan pada token STS, Anda perlu menyediakan dukungan pembaruan kredensial.

import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider;
import com.alicloud.openservices.tablestore.core.auth.DefaultCredentials;
import com.alicloud.openservices.tablestore.core.auth.ServiceCredentials;

public class CustomCredentialProviderDemoTest {

    public static void main(String[] args) {

        CredentialsProvider credentialsProvider = new CredentialsProvider(){

            // Inisialisasi variabel.
            String accessKeyId = null;
            // Inisialisasi variabel.
            String accessKeySecrect = null;
            // Inisialisasi variabel.
            // String token = null;

            @Override
            public void setCredentials(ServiceCredentials credentials) {
            }

            @Override
            public ServiceCredentials getCredentials() {
                //TODO
                // Tentukan metode kustom untuk mendapatkan kredensial akses.

                // Kembalikan kredensial akses jangka panjang, yang terdiri dari ID AccessKey dan Rahasia AccessKey.
                return new DefaultCredentials(accessKeyId, accessKeySecrect);

                // Kembalikan kredensial akses sementara, yang terdiri dari ID AccessKey, Rahasia AccessKey, dan token STS.
                // Perbarui kredensial akses sementara berdasarkan waktu kedaluwarsa. 
                // return new DefaultCredentials(accessKeyId, accessKeySecrect, token);
            }
        };
        // Gunakan credentialsProvider untuk melakukan operasi selanjutnya.
    }
}