Secrets Managerクライアントは、Secrets Manager関連の操作を呼び出して、ビジネスロジック、ベストプラクティス、およびデザインパターンをカプセル化します。 これにより、Secrets Managerの機能をビジネスシステムに簡単に統合できます。 Secrets Managerクライアントを使用すると、secrets Managerで管理されているシークレットを動的に使用できます。 これにより、機密データをハードコードする必要がなくなります。
特徴
Secrets Managerクライアントは、次の機能を提供します。
Secrets Managerの機能をアプリケーションに統合できます。 1行のコードを使用して、秘密情報を読み取ることができます。
アプリケーションでシークレットをキャッシュおよび更新できます。
APIエラーベースの再試行メカニズムをカプセル化して、報告されたエラーをインテリジェントに処理します。
拡張キャッシュやエラーの再試行などの機能をカスタマイズできるプラグインのデザインモードを提供します。
Java用Secrets Managerクライアント
クライアントのインストール
Key Management Service (KMS) は、Java用のSecrets Managerクライアントを提供します。 クライアントのソースコードの詳細については、alibabacloud-secretsmanager-client-javaをご参照ください。
次のMaven依存関係を追加することで、Secrets Manager Client for Javaをインストールできます。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>alibabacloud-secretsmanager-client</artifactId>
<version>x.x.x</version>
</dependency>Secrets Manager Client For Javaのバージョンの詳細については、alibabacloud-secretsmanager-client releaseを参照してください。
サンプルコード
Alibaba CloudアカウントのAccessKeyペアには、すべてのAPI操作に対する権限があります。 AccessKeyペアを使用して操作を実行することは、リスクの高い操作です。 RAMユーザーを使用してAPI操作を呼び出したり、ルーチンのO&Mを実行することを推奨します。プロジェクトコードにAccessKey IDとAccessKey Secretを保存しないことを推奨します。 そうしないと、AccessKeyペアが漏洩し、アカウントに属するすべてのリソースのセキュリティが侵害される可能性があります。
この例では、AccessKeyペアは、ID認証を実装するためにALIBABA_CLOUD_ACCESS_KEY_IDとALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数に保存されます。
認証情報の設定方法の詳細については、「アクセス資格情報の管理」をご参照ください。
環境変数を設定するために使用される方法は、オペレーティングシステムによって異なります。 詳細については、「Linux、macOS、およびWindowsでの環境変数の設定」をご参照ください。
secretsmanager.properties構成ファイルを使用してクライアントを構築する
クライアントキーベースのアプリケーションアクセスポイント (AAP) を作成し、クライアントキーを使用してSecrets Manager SDK for Javaを呼び出すことを推奨します。 クライアントキーの作成方法の詳細については、「クライアントキーをAAPにバインドする」をご参照ください。
Secrets Manager Client for Java 1.1.8以降のバージョンでは、クライアントキーベースのAAPを使用してSecrets Managerにアクセスできます。 この場合、次の設定ファイルを用意する必要があります。
## Specify the access method. credentials_type=client_key ## Read the decryption password of the client key. You can read the password from an environment variable or a file. 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# ## Obtain the private key file of the client key. client_key_private_key_path=#your client key private key file path# ## Specify the region of KMS. cache_client_region_id=[{"regionId":"#regionId#"}]サンプルコード:
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(); } } }AccessKey ID、AccessKey secret、リージョンIDなどのパラメーターを使用してクライアントを構築します。
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(); } } }カスタムパラメータを使用してクライアントを構築する
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(); } } }
Python用Secrets Managerクライアント
クライアントのインストール
KMSは、Python用のSecrets Managerクライアントを提供します。 クライアントのソースコードの詳細については、aliyun-secretsmanager-client-pythonをご参照ください。
次のpipコマンドを実行して、Secrets Manager Client for Pythonをプロジェクトにインストールできます。
pip install aliyun-secret-manager-clientSecrets Manager Client For Pythonのバージョンの詳細については、aliyun-secretsmanager-client-pythonをご覧ください。
サンプルコード
Alibaba CloudアカウントのAccessKeyペアには、すべてのAPI操作に対する権限があります。 AccessKeyペアを使用して操作を実行することは、リスクの高い操作です。 RAMユーザーを使用してAPI操作を呼び出したり、ルーチンのO&Mを実行することを推奨します。プロジェクトコードにAccessKey IDとAccessKey Secretを保存しないことを推奨します。 そうしないと、AccessKeyペアが漏洩し、アカウントに属するすべてのリソースのセキュリティが侵害される可能性があります。
この例では、AccessKeyペアは、ID認証を実装するためにALIBABA_CLOUD_ACCESS_KEY_IDとALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数に保存されます。
認証情報の設定方法の詳細については、「アクセス資格情報の管理」をご参照ください。
環境変数を設定するために使用される方法は、オペレーティングシステムによって異なります。 詳細については、「Linux、macOS、およびWindowsでの環境変数の設定」をご参照ください。
環境変数を使用してクライアントを構築する
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__)AccessKey ID、AccessKey secret、リージョンIDなどのパラメーターを使用してクライアントを構築します。
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__)カスタムパラメータを使用してクライアントを構築する
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__)
Go用のSecrets Managerクライアント
クライアントのインストール
KMSはGo用のSecrets Managerクライアントを提供します。 クライアントのソースコードの詳細については、aliyun-secretsmanager-client-goをご参照ください。
次のコマンドを実行して、Secrets Manager Client for Goをプロジェクトにインストールできます。
go get -u github.com/aliyun/aliyun-secretsmanager-client-goSecrets Manager Client For Goのバージョンの詳細については、aliyun-secretsmanager-client-goをご覧ください。
サンプルコード
Alibaba CloudアカウントのAccessKeyペアには、すべてのAPI操作に対する権限があります。 AccessKeyペアを使用して操作を実行することは、リスクの高い操作です。 RAMユーザーを使用してAPI操作を呼び出したり、ルーチンのO&Mを実行することを推奨します。プロジェクトコードにAccessKey IDとAccessKey Secretを保存しないことを推奨します。 そうしないと、AccessKeyペアが漏洩し、アカウントに属するすべてのリソースのセキュリティが侵害される可能性があります。
この例では、AccessKeyペアは、ID認証を実装するためにALIBABA_CLOUD_ACCESS_KEY_IDとALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数に保存されます。
認証情報を設定する方法の詳細については、「SDKクライアントの初期化とAPIリクエストの送信」をご参照ください。
環境変数を設定するために使用される方法は、オペレーティングシステムによって異なります。 詳細については、「Linux、macOS、およびWindowsでの環境変数の設定」をご参照ください。
secretsmanager.properties構成ファイルを使用してクライアントを構築する
クライアントキーベースのAAPを作成し、そのクライアントキーを使用してSecrets Manager SDK for Javaを呼び出すことを推奨します。 クライアントキーの作成方法の詳細については、「クライアントキーをAAPにバインドする」をご参照ください。
Secrets Manager Client for Go 1.0.1以降のバージョンでは、クライアントキーベースのAAPを使用してSecrets Managerにアクセスできます。 この場合、次の設定ファイルを用意する必要があります。
## Specify the access method. credentials_type=client_key ## Read the decryption password of the client key. You can read the password from an environment variable or a file. 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# ## Obtain the private key file of the client key. client_key_private_key_path=#your client key private key file path# ## Specify the region of KMS. cache_client_region_id=[{"regionId":"#regionId#"}]サンプルコード:
package main import ( "fmt" "github.com/aliyun/aliyun-secretsmanager-client-go/sdk" ) func main() { client, err := sdk.NewClient() if err != nil { // Handle exceptions panic(err) } secretInfo, err := client.GetSecretInfo("#secretName#") if err != nil { // Handle exceptions panic(err) } fmt.Printf("SecretValue:%s\n",secretInfo.SecretValue) }AccessKey ID、AccessKey secret、リージョンIDなどのパラメーターを使用してクライアントを構築します。
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 { // Handle exceptions panic(err) } secretInfo, err := client.GetSecretInfo("#secretName#") if err != nil { // Handle exceptions panic(err) } fmt.Printf("SecretValue:%s\n",secretInfo.SecretValue) }カスタムパラメータを使用してクライアントを構築する
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 { // Handle exceptions panic(err) } secretInfo, err := client.GetSecretInfo("#secretName#") if err != nil { // Handle exceptions panic(err) } fmt.Printf("SecretValue:%s\n",secretInfo.SecretValue) }