全部产品
Search
文档中心

Key Management Service:Klien Secrets Manager

更新时间:Jul 02, 2025

Klien Secrets Manager mengenkapsulasi logika bisnis, praktik terbaik, dan pola desain dengan memanggil operasi terkait Secrets Manager. Klien ini memungkinkan Anda mengintegrasikan kemampuan Secrets Manager ke dalam sistem bisnis secara mudah serta menggunakan rahasia yang dikelola secara dinamis di Secrets Manager, sehingga tidak perlu melakukan hard code pada data sensitif.

Fitur

Klien Secrets Manager menyediakan fitur-fitur berikut:

  • Memungkinkan Anda mengintegrasikan kemampuan Secrets Manager ke dalam aplikasi dengan satu baris kode untuk membaca informasi rahasia.

  • Menyediakan kemampuan untuk men-cache dan menyegarkan rahasia di aplikasi.

  • Mengenkapsulasi mekanisme retry berbasis kesalahan API untuk menangani kesalahan secara cerdas.

  • Menyediakan mode desain plug-in agar Anda dapat menyesuaikan fitur seperti cache yang diperluas dan retry kesalahan.

Klien Secrets Manager untuk Java

Instal klien

Key Management Service (KMS) menyediakan Klien Secrets Manager untuk Java. Untuk informasi lebih lanjut tentang kode sumber klien, kunjungi alibabacloud-secretsmanager-client-java.

Anda dapat menginstal Klien Secrets Manager untuk Java dengan menambahkan dependensi Maven berikut:

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>alibabacloud-secretsmanager-client</artifactId>
    <version>x.x.x</version>
</dependency>
Catatan

Untuk informasi lebih lanjut tentang versi Klien Secrets Manager untuk Java, kunjungi alibabacloud-secretsmanager-client release.

Contoh kode

Catatan

Pasangan AccessKey dari akun Alibaba Cloud memiliki izin untuk semua Operasi API. Menggunakan pasangan AccessKey untuk melakukan operasi adalah operasi berisiko tinggi. Selain itu, gunakan pengguna RAM untuk memanggil Operasi API atau melakukan O&M rutin. Kami menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey di kode proyek Anda. Jika Anda melakukannya, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya yang dimiliki oleh akun Anda mungkin terganggu.

Dalam contoh ini, pasangan AccessKey disimpan dalam variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET untuk mengimplementasikan otentikasi identitas.

  • Buat klien menggunakan file konfigurasi secretsmanager.properties

    Kami sarankan Anda membuat titik akses aplikasi (AAP) berbasis kunci klien dan menggunakan kunci klien untuk memanggil SDK Secrets Manager untuk Java. Untuk informasi lebih lanjut tentang cara membuat kunci klien, lihat Ikat kunci klien ke AAP.

    Klien Secrets Manager untuk Java versi 1.1.8 atau yang lebih baru memungkinkan Anda mengakses Secrets Manager menggunakan AAP berbasis kunci klien. Dalam hal ini, Anda harus menyiapkan file konfigurasi berikut:

    ## Tentukan metode akses. 
    credentials_type=client_key
    
    ## Baca kata sandi dekripsi kunci klien. Anda dapat membaca kata sandi dari variabel lingkungan atau file. 
    client_key_password_from_env_variable=#nama variabel lingkungan kata sandi kunci privat klien Anda#
    client_key_password_from_file_path=#jalur file kata sandi kunci privat klien Anda#
    
    ## Dapatkan file kunci privat kunci klien. 
    client_key_private_key_path=#jalur file kunci privat klien Anda#
    
    ## Tentukan wilayah KMS. 
    cache_client_region_id=[{"regionId":"#regionId#"}]

    Contoh kode:

    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;
    
    public class CacheClientEnvironmentSample {
    
        public static void main(String[] args) {
            try {
                SecretCacheClient client = SecretCacheClientBuilder.newClient();
                SecretInfo secretInfo = client.getSecretInfo("#secretName#");
                System.out.println(secretInfo);
            } catch (CacheSecretException e) {
                e.printStackTrace();
            }
        }
    }
  • Buat klien menggunakan parameter seperti ID AccessKey, Rahasia AccessKey, dan ID wilayah

    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 com.aliyuncs.kms.secretsmanager.client.service.BaseSecretManagerClientBuilder;
    import com.aliyuncs.kms.secretsmanager.client.utils.CredentialsProviderUtils;
    
    public class CacheClientSimpleParametersSample {
    
        public static void main(String[] args) {
            try {
                SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(
                        BaseSecretManagerClientBuilder.standard().withCredentialsProvider(CredentialsProviderUtils
                                .withAccessKey(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))).withRegion("#regionId#").build()).build();
                SecretInfo secretInfo = client.getSecretInfo("#secretName#");
                System.out.println(secretInfo);
            } catch (CacheSecretException e) {
                e.printStackTrace();
            }
        }
    }
  • Buat klien menggunakan parameter kustom

    import com.aliyuncs.kms.secretsmanager.client.SecretCacheClient;
    import com.aliyuncs.kms.secretsmanager.client.SecretCacheClientBuilder;
    import com.aliyuncs.kms.secretsmanager.client.cache.FileCacheSecretStoreStrategy;
    import com.aliyuncs.kms.secretsmanager.client.exception.CacheSecretException;
    import com.aliyuncs.kms.secretsmanager.client.model.SecretInfo;
    import com.aliyuncs.kms.secretsmanager.client.service.BaseSecretManagerClientBuilder;
    import com.aliyuncs.kms.secretsmanager.client.service.DefaultRefreshSecretStrategy;
    import com.aliyuncs.kms.secretsmanager.client.service.FullJitterBackoffStrategy;
    import com.aliyuncs.kms.secretsmanager.client.utils.CredentialsProviderUtils;
    
    public class CacheClientDetailParametersSample {
    
        public static void main(String[] args) {
            try {
                SecretCacheClient client = SecretCacheClientBuilder.newCacheClientBuilder(BaseSecretManagerClientBuilder.standard()
                        .withCredentialsProvider(CredentialsProviderUtils.withAccessKey(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")))
                        .withRegion("#regionId#")
                        .withBackoffStrategy(new FullJitterBackoffStrategy(3, 2000, 10000)).build())
                        .withCacheSecretStrategy(new FileCacheSecretStoreStrategy("#cacheSecretPath#", true, "#salt#"))
                        .withRefreshSecretStrategy(new DefaultRefreshSecretStrategy("#ttlName#"))
                        .withCacheStage("#stage#")
                        .withSecretTTL("#secretName#", 1 * 60 * 1000l)
                        .withSecretTTL("#secretName1#", 2 * 60 * 1000l).build();
                SecretInfo secretInfo = client.getSecretInfo("#secretName#");
                System.out.println(secretInfo);
            } catch (CacheSecretException e) {
                e.printStackTrace();
            }
        }
    }

Klien Secrets Manager untuk Python

Instal klien

KMS menyediakan Klien Secrets Manager untuk Python. Untuk informasi lebih lanjut tentang kode sumber klien, kunjungi aliyun-secretsmanager-client-python.

Anda dapat menjalankan perintah pip berikut untuk menginstal Klien Secrets Manager untuk Python di proyek Anda:

pip install aliyun-secret-manager-client
Catatan

Untuk informasi lebih lanjut tentang versi Klien Secrets Manager untuk Python, kunjungi aliyun-secretsmanager-client-python.

Contoh kode

Catatan

Pasangan AccessKey dari akun Alibaba Cloud memiliki izin untuk semua Operasi API. Menggunakan pasangan AccessKey untuk melakukan operasi adalah operasi berisiko tinggi. Kami menyarankan Anda menggunakan pengguna RAM untuk memanggil Operasi API atau melakukan O&M rutin. Kami menyarankan Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey di kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya yang dimiliki oleh akun Anda mungkin terganggu.

Dalam contoh ini, pasangan AccessKey disimpan dalam variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET untuk mengimplementasikan otentikasi identitas.

  • Buat klien menggunakan variabel lingkungan

    from alibaba_cloud_secretsmanager_client.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
    
    if __name__ == '__main__':
        secret_cache_client = SecretManagerCacheClientBuilder.new_client()
        secret_info = secret_cache_client.get_secret_info("#secretName#")
        print(secret_info.__dict__)
  • Buat klien menggunakan parameter seperti ID AccessKey, Rahasia AccessKey, dan ID wilayah

    from alibaba_cloud_secretsmanager_client.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
    from alibaba_cloud_secretsmanager_client.service.default_secret_manager_client_builder import DefaultSecretManagerClientBuilder
    
    if __name__ == '__main__':
        secret_cache_client = SecretManagerCacheClientBuilder.new_cache_client_builder(DefaultSecretManagerClientBuilder.standard() \
            .with_access_key(os.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")) \
            .with_region("#regionId#").build()) \
        .build();
        secret_info = secret_cache_client.get_secret_info("#secretName#")
        print(secret_info.__dict__)
  • Buat klien menggunakan parameter kustom

    from alibaba_cloud_secretsmanager_client.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
    from alibaba_cloud_secretsmanager_client.cache.file_cache_secret_store_strategy import FileCacheSecretStoreStrategy
    from alibaba_cloud_secretsmanager_client.service.default_secret_manager_client_builder import DefaultSecretManagerClientBuilder
    from alibaba_cloud_secretsmanager_client.service.default_refresh_secret_strategy import DefaultRefreshSecretStrategy
    from alibaba_cloud_secretsmanager_client.service.full_jitter_back_off_strategy import FullJitterBackoffStrategy
    
    if __name__ == '__main__':
        secret_cache_client = SecretManagerCacheClientBuilder \
        .new_cache_client_builder(DefaultSecretManagerClientBuilder.standard().with_access_key(os.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")) \
             .with_back_off_strategy(FullJitterBackoffStrategy(3, 2000, 10000)) \
             .with_region("#regionId#").build()) \
         .with_cache_secret_strategy(FileCacheSecretStoreStrategy("#cacheSecretPath#", True,"#salt#")) \
         .with_refresh_secret_strategy(DefaultRefreshSecretStrategy("#ttlName#")) \
         .with_cache_stage("#stage#") \
         .with_secret_ttl("#secretName#", 1 * 60 * 1000) \
         .build()
        secret_info = secret_cache_client.get_secret_info("#secretName#")
        print(secret_info.__dict__)

Klien Secrets Manager untuk Go

Instal klien

KMS menyediakan Klien Secrets Manager untuk Go. Untuk informasi lebih lanjut tentang kode sumber klien, kunjungi aliyun-secretsmanager-client-go.

Anda dapat menjalankan perintah berikut untuk menginstal Klien Secrets Manager untuk Go di proyek Anda:

 go get -u github.com/aliyun/aliyun-secretsmanager-client-go
Catatan

Untuk informasi lebih lanjut tentang versi Klien Secrets Manager untuk Go, kunjungi aliyun-secretsmanager-client-go.

Contoh kode

Catatan

Pasangan AccessKey dari akun Alibaba Cloud memiliki izin untuk semua Operasi API. Menggunakan pasangan AccessKey untuk melakukan operasi adalah operasi berisiko tinggi. Kami menyarankan Anda menggunakan pengguna RAM untuk memanggil Operasi API atau melakukan O&M rutin. Kami menyarankan Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey di kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya yang dimiliki oleh akun Anda mungkin terganggu.

Dalam contoh ini, pasangan AccessKey disimpan dalam variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET untuk mengimplementasikan otentikasi identitas.

  • Buat klien menggunakan file konfigurasi secretsmanager.properties

    Kami sarankan Anda membuat titik akses aplikasi (AAP) berbasis kunci klien dan menggunakan kunci klien untuk memanggil SDK Secrets Manager untuk Java. Untuk informasi lebih lanjut tentang cara membuat kunci klien, lihat Ikat kunci klien ke AAP.

    Klien Secrets Manager untuk Go versi 1.0.1 atau yang lebih baru memungkinkan Anda mengakses Secrets Manager menggunakan AAP berbasis kunci klien. Dalam hal ini, Anda harus menyiapkan file konfigurasi berikut:

    ## Tentukan metode akses. 
    credentials_type=client_key
    
    ## Baca kata sandi dekripsi kunci klien. Anda dapat membaca kata sandi dari variabel lingkungan atau file. 
    client_key_password_from_env_variable=#nama variabel lingkungan kata sandi kunci privat klien Anda#
    client_key_password_from_file_path=#jalur file kata sandi kunci privat klien Anda#
    
    ## Dapatkan file kunci privat kunci klien. 
    client_key_private_key_path=#jalur file kunci privat klien Anda#
    
    ## Tentukan wilayah KMS. 
    cache_client_region_id=[{"regionId":"#regionId#"}]

    Contoh kode:

    package main
    
    import (
        "fmt"
        "github.com/aliyun/aliyun-secretsmanager-client-go/sdk"
    )
    
    func main() {
        client, err := sdk.NewClient()
        if err != nil {
            // Tangani pengecualian
            panic(err)
        }
        secretInfo, err := client.GetSecretInfo("#secretName#")
        if err != nil {
            // Tangani pengecualian
            panic(err)
        }
        fmt.Printf("SecretValue:%s\n",secretInfo.SecretValue)
    }
  • Buat klien menggunakan parameter seperti ID AccessKey, Rahasia AccessKey, dan ID wilayah

    package main
    
    import (
        "fmt"
        "github.com/aliyun/aliyun-secretsmanager-client-go/sdk/service"
        "github.com/aliyun/aliyun-secretsmanager-client-go/sdk"
    )
    
    func main() {
        client, err := sdk.NewSecretCacheClientBuilder(service.NewDefaultSecretManagerClientBuilder().Standard().WithAccessKey(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")).WithRegion("#regionId#").Build()).Build()
        if err != nil {
            // Tangani pengecualian
            panic(err)
        }
        secretInfo, err := client.GetSecretInfo("#secretName#")
        if err != nil {
            // Tangani pengecualian
            panic(err)
        }
        fmt.Printf("SecretValue:%s\n",secretInfo.SecretValue)
    }
  • Buat klien menggunakan parameter kustom

    package main
    
    import (
        "fmt"
        "github.com/aliyun/aliyun-secretsmanager-client-go/sdk/service"
        "github.com/aliyun/aliyun-secretsmanager-client-go/sdk"
        "github.com/aliyun/aliyun-secretsmanager-client-go/sdk/cache"
    )
    
    func main() {
        client, err := sdk.NewSecretCacheClientBuilder(
            service.NewDefaultSecretManagerClientBuilder().Standard().WithAccessKey(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")).WithRegion("#regionId#").WithBackoffStrategy(&service.FullJitterBackoffStrategy{RetryMaxAttempts: 3, RetryInitialIntervalMills: 2000, Capacity: 10000}).Build()).WithCacheSecretStrategy(cache.NewFileCacheSecretStoreStrategy("#cacheSecretPath#", true, "#salt#")).WithRefreshSecretStrategy(service.NewDefaultRefreshSecretStrategy("#jsonTTLPropertyName#")).WithCacheStage("ACSCurrent").WithSecretTTL("#secretName#", 1*60*1000).Build()
        if err != nil {
            // Tangani pengecualian
            panic(err)
        }
        secretInfo, err := client.GetSecretInfo("#secretName#")
        if err != nil {
            // Tangani pengecualian
            panic(err)
        }
        fmt.Printf("SecretValue:%s\n",secretInfo.SecretValue)
    }