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>Untuk informasi lebih lanjut tentang versi Klien Secrets Manager untuk Java, kunjungi alibabacloud-secretsmanager-client release.
Contoh kode
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.
Untuk informasi lebih lanjut tentang cara mengonfigurasi informasi autentikasi, lihat Kelola kredensial akses.
Metode yang digunakan untuk mengonfigurasi variabel lingkungan bervariasi berdasarkan sistem operasi. Untuk informasi lebih lanjut, lihat Konfigurasikan variabel lingkungan di Linux, macOS, dan Windows.
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-clientUntuk informasi lebih lanjut tentang versi Klien Secrets Manager untuk Python, kunjungi aliyun-secretsmanager-client-python.
Contoh kode
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.
Untuk informasi lebih lanjut tentang cara mengonfigurasi informasi autentikasi, lihat Kelola kredensial akses.
Metode yang digunakan untuk mengonfigurasi variabel lingkungan bervariasi berdasarkan sistem operasi. Untuk informasi lebih lanjut, lihat Konfigurasikan variabel lingkungan di Linux, macOS, dan Windows.
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-goUntuk informasi lebih lanjut tentang versi Klien Secrets Manager untuk Go, kunjungi aliyun-secretsmanager-client-go.
Contoh kode
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.
Untuk informasi lebih lanjut tentang cara mengonfigurasi informasi autentikasi, lihat Kelola kredensial akses.
Metode yang digunakan untuk mengonfigurasi variabel lingkungan bervariasi berdasarkan sistem operasi. Untuk informasi lebih lanjut, lihat Konfigurasikan variabel lingkungan di Linux, macOS, dan Windows.
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) }