SecretClient クラス
- java.
lang. Object - com.
azure. security. keyvault. secrets. SecretClient
- com.
public final class SecretClient
SecretClient には、Azure Key Vaultで管理KeyVaultSecretするための同期メソッドが用意されています。 クライアントでは、 の作成、取得、更新、削除、消去、バックアップ、復元、一覧表示が KeyVaultSecretサポートされています。 クライアントでは、論理的な削除が有効なキー コンテナーの一覧 DeletedSecret もサポートされています。
作業の開始
Azure Key Vault サービスと対話するには、 クラスのインスタンス、コンテナーの SecretClient URL、資格情報オブジェクトを作成する必要があります。
このドキュメントに示す例では、認証に DefaultAzureCredential という名前の資格情報オブジェクトを使用します。これは、ローカルの開発環境や運用環境など、ほとんどのシナリオに適しています。 さらに、運用環境での認証には マネージド ID を 使用することをお勧めします。 さまざまな認証方法と、それに対応する資格情報の種類の詳細については、 Azure Identity のドキュメントを参照してください。
サンプル: 同期シークレット クライアントの構築
SecretClient secretClient = new SecretClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.vaultUrl("<your-key-vault-url>")
.buildClient();
シークレットを作成する
を SecretClient 使用して、キー コンテナーにシークレットを作成できます。
コード サンプル:
次のコード サンプルでは、API を使用して、キー コンテナーにシークレットを同期的に作成して格納する方法を setSecret(String name, String value) 示します。
KeyVaultSecret secret = secretClient.setSecret("secretName", "secretValue");
System.out.printf("Secret is created with name %s and value %s%n", secret.getName(), secret.getValue());
メモ: 非同期サンプルについては、 を SecretAsyncClient参照してください。
シークレットを取得する
を SecretClient 使用して、キー コンテナーからシークレットを取得できます。
コード サンプル:
次のコード サンプルは、API を使用して、以前に格納されたシークレットを Azure KeyVault から同期的に取得する方法を getSecret(String name) 示しています。
KeyVaultSecret secret = secretClient.getSecret("secretName");
System.out.printf("Secret is returned with name %s and value %s%n",
secret.getName(), secret.getValue());
メモ: 非同期サンプルについては、 を SecretAsyncClient参照してください。
シークレットを削除する
を SecretClient 使用して、キー コンテナーからシークレットを削除できます。
コード サンプル:
次のコード サンプルは、API を使用してキー コンテナーからシークレットを削除する方法を beginDeleteSecret(String name) 示しています。
SyncPoller<DeletedSecret, Void> deleteSecretPoller = secretClient.beginDeleteSecret("secretName");
// Deleted Secret is accessible as soon as polling begins.
PollResponse<DeletedSecret> deleteSecretPollResponse = deleteSecretPoller.poll();
// Deletion date only works for a SoftDelete-enabled Key Vault.
System.out.println("Deleted Date %s" + deleteSecretPollResponse.getValue()
.getDeletedOn().toString());
System.out.printf("Deleted Secret's Recovery Id %s", deleteSecretPollResponse.getValue()
.getRecoveryId());
// Secret is being deleted on server.
deleteSecretPoller.waitForCompletion();
メモ: 非同期サンプルについては、 を SecretAsyncClient参照してください。
メソッドの概要
メソッドの継承元: java.lang.Object
メソッドの詳細
backupSecret
public byte[] backupSecret(String name)
シークレットのバックアップをクライアントにダウンロードするように要求します。 シークレットのすべてのバージョンがダウンロードされます。 この操作には アクセス許可が必要です secrets/backup
。
Code sample
キー コンテナーからシークレットをバックアップし、応答で返されるシークレットのバックアップ バイト配列の長さを出力します
byte[] secretBackup = secretClient.backupSecret("secretName");
System.out.printf("Secret's Backup Byte array's length %s", secretBackup.length);
Parameters:
Returns:
backupSecretWithResponse
public Response
シークレットのバックアップをクライアントにダウンロードするように要求します。 シークレットのすべてのバージョンがダウンロードされます。 この操作には アクセス許可が必要です secrets/backup
。
Code sample
キー コンテナーからシークレットをバックアップし、応答で返されるシークレットのバックアップ バイト配列の長さを出力します
byte[] secretBackup = secretClient.backupSecretWithResponse("secretName",
new Context(key1, value1)).getValue();
System.out.printf("Secret's Backup Byte array's length %s", secretBackup.length);
Parameters:
Returns:
beginDeleteSecret
public SyncPoller
キー コンテナーからシークレットを削除します。 キー コンテナーで論理的な削除が有効になっている場合、シークレットは削除された状態になり、完全削除のためには消去する必要があります。 それ以外の場合、シークレットは完全に削除されます。 シークレットのすべてのバージョンが削除されます。 これは、シークレットの個々のバージョンには適用できません。 この操作には アクセス許可が必要です secrets/delete
。
Code sample
論理的な削除が有効なキー コンテナーからシークレットを削除します。 応答で返された削除されたシークレットの回復 ID を出力します。
SyncPoller<DeletedSecret, Void> deleteSecretPoller = secretClient.beginDeleteSecret("secretName");
// Deleted Secret is accessible as soon as polling begins.
PollResponse<DeletedSecret> deleteSecretPollResponse = deleteSecretPoller.poll();
// Deletion date only works for a SoftDelete-enabled Key Vault.
System.out.println("Deleted Date %s" + deleteSecretPollResponse.getValue()
.getDeletedOn().toString());
System.out.printf("Deleted Secret's Recovery Id %s", deleteSecretPollResponse.getValue()
.getRecoveryId());
// Secret is being deleted on server.
deleteSecretPoller.waitForCompletion();
Parameters:
Returns:
beginRecoverDeletedSecret
public SyncPoller
キー コンテナー内の削除されたシークレットを最新バージョンに回復します。 論理的な削除が有効なコンテナーでのみ実行できます。 この操作には、アクセス許可が必要です secrets/recover
。
Code sample
論理的な削除が有効になっているキー コンテナーから削除されたシークレットを 回復します。 応答で返された回復されたシークレットの詳細を出力します。
SyncPoller<KeyVaultSecret, Void> recoverSecretPoller =
secretClient.beginRecoverDeletedSecret("deletedSecretName");
// Deleted Secret can be accessed as soon as polling is in progress.
PollResponse<KeyVaultSecret> recoveredSecretPollResponse = recoverSecretPoller.poll();
System.out.println("Recovered Key Name %s" + recoveredSecretPollResponse.getValue().getName());
System.out.printf("Recovered Key's Id %s", recoveredSecretPollResponse.getValue().getId());
// Key is being recovered on server.
recoverSecretPoller.waitForCompletion();
Parameters:
Returns:
getDeletedSecret
public DeletedSecret getDeletedSecret(String name)
論理的な削除が有効なキー コンテナーに対して削除されたシークレットを取得します。 この操作には、アクセス許可が必要です secrets/list
。
Code sample
論理的な削除が有効になっているキー コンテナーから削除されたシークレットを取得します。 応答で返された削除されたシークレットの詳細を出力します。
DeletedSecret deletedSecret = secretClient.getDeletedSecret("secretName");
System.out.printf("Deleted Secret's Recovery Id %s", deletedSecret.getRecoveryId());
Parameters:
Returns:
getDeletedSecretWithResponse
public Response
論理的な削除が有効なキー コンテナーに対して削除されたシークレットを取得します。 この操作には、アクセス許可が必要です secrets/list
。
Code sample
論理的な削除が有効になっているキー コンテナーから削除されたシークレットを取得します。 応答で返された削除されたシークレットの詳細を出力します。
DeletedSecret deletedSecret = secretClient.getDeletedSecretWithResponse("secretName",
new Context(key2, value2)).getValue();
System.out.printf("Deleted Secret's Recovery Id %s", deletedSecret.getRecoveryId());
Parameters:
Returns:
getSecret
public KeyVaultSecret getSecret(String name)
キー コンテナーから、指定したシークレットの最新バージョンを取得します。 この操作には、アクセス許可が必要です secrets/get
。
Code sample
キー コンテナー内のシークレットの最新バージョンを取得します。 返されたシークレットの詳細を出力します。
KeyVaultSecret secret = secretClient.getSecret("secretName");
System.out.printf("Secret is returned with name %s and value %s%n",
secret.getName(), secret.getValue());
Parameters:
Returns:
getSecret
public KeyVaultSecret getSecret(String name, String version)
キー コンテナーから、指定したバージョンの指定されたシークレットを取得します。 この操作には、アクセス許可が必要です secrets/get
。
Code sample
キー コンテナー内のシークレットの特定のバージョンを取得します。 返されたシークレットの詳細を出力します。
String secretVersion = "6A385B124DEF4096AF1361A85B16C204";
KeyVaultSecret secretWithVersion = secretClient.getSecret("secretName", secretVersion);
System.out.printf("Secret is returned with name %s and value %s%n",
secretWithVersion.getName(), secretWithVersion.getValue());
Parameters:
Returns:
getSecretWithResponse
public Response
キー コンテナーから、指定したバージョンの指定されたシークレットを取得します。 この操作には、アクセス許可が必要です secrets/get
。
Code sample
キー コンテナー内のシークレットの特定のバージョンを取得します。 返されたシークレットの詳細を出力します。
String secretVersion = "6A385B124DEF4096AF1361A85B16C204";
KeyVaultSecret secretWithVersion = secretClient.getSecretWithResponse("secretName", secretVersion,
new Context(key2, value2)).getValue();
System.out.printf("Secret is returned with name %s and value %s%n",
secretWithVersion.getName(), secretWithVersion.getValue());
Parameters:
Returns:
getVaultUrl
public String getVaultUrl()
サービス要求の送信先となるコンテナー エンドポイント URL を取得します。
Returns:
listDeletedSecrets
public PagedIterable
キー コンテナーで論理的な削除が有効になっている場合の一覧 DeletedSecret 。 この操作には、アクセス許可が必要です secrets/list
。
シークレットを反復処理する
キー コンテナー内の削除されたシークレットを一覧表示し、削除された各シークレットの回復 ID を出力します。
for (DeletedSecret deletedSecret : secretClient.listDeletedSecrets()) {
System.out.printf("Deleted secret's recovery Id %s", deletedSecret.getRecoveryId());
}
シークレットをページごとに反復処理する
反復処理 キー コンテナー内のページごとに削除されたシークレットを一覧表示し、削除されたシークレットごとに回復 ID を出力します。
secretClient.listDeletedSecrets().iterableByPage().forEach(resp -> {
System.out.printf("Got response headers . Url: %s, Status code: %d %n",
resp.getRequest().getUrl(), resp.getStatusCode());
resp.getItems().forEach(value -> {
System.out.printf("Deleted secret's recovery Id %s", value.getRecoveryId());
});
});
Returns:
listDeletedSecrets
public PagedIterable
キー コンテナーで論理的な削除が有効になっている場合の一覧 DeletedSecret 。 この操作には、アクセス許可が必要です secrets/list
。
Code sample
キー コンテナー内の削除されたシークレットを一覧表示し、削除された各シークレットの回復 ID を出力します。
for (DeletedSecret deletedSecret : secretClient.listDeletedSecrets(new Context(key1, value2))) {
System.out.printf("Deleted secret's recovery Id %s", deletedSecret.getRecoveryId());
}
Parameters:
Returns:
listPropertiesOfSecretVersions
public PagedIterable
指定したシークレットのすべてのバージョンを一覧表示します。 返される各 SecretProperties ID と属性のみが設定されます。 シークレットの値とシークレットのバージョンは、応答に一覧表示されません。 この操作には、アクセス許可が必要です secrets/list
。
Code sample
次のサンプルでは、指定されたシークレットのすべてのバージョンをフェッチします。 取得したシークレット バージョンごとに、 を getSecret(String name, String version) 呼び出してバージョンの値を取得し、出力します。
for (SecretProperties secret : secretClient.listPropertiesOfSecretVersions("secretName")) {
KeyVaultSecret secretWithValue = secretClient.getSecret(secret.getName(), secret.getVersion());
System.out.printf("Received secret's version with name %s and value %s",
secretWithValue.getName(), secretWithValue.getValue());
}
Parameters:
Returns:
name
がキー コンテナーに存在しない場合、リストは空ですlistPropertiesOfSecretVersions
public PagedIterable
指定したシークレットのすべてのバージョンを一覧表示します。 返される各 SecretProperties ID と属性のみが設定されます。 シークレットの値とシークレットのバージョンは、応答に一覧表示されません。 この操作には、アクセス許可が必要です secrets/list
。
Code sample
次のサンプルでは、指定されたシークレットのすべてのバージョンをフェッチします。 取得したシークレット バージョンごとに、 を getSecret(String name, String version) 呼び出してバージョンの値を取得し、出力します。
for (SecretProperties secret : secretClient
.listPropertiesOfSecretVersions("secretName", new Context(key1, value2))) {
KeyVaultSecret secretWithValue = secretClient.getSecret(secret.getName(), secret.getVersion());
System.out.printf("Received secret's version with name %s and value %s",
secretWithValue.getName(), secretWithValue.getValue());
}
シークレット バージョンをページごとに反復処理する
次のサンプルでは、各 SecretProperties ページを反復処理し、 を呼び出します getSecret(String name, String version)。 これにより、対応するバージョンの値を持つ が返 KeyVaultSecret されます。
secretClient.listPropertiesOfSecretVersions("secretName", new Context(key1, value2))
.iterableByPage().forEach(resp -> {
System.out.printf("Got response headers . Url: %s, Status code: %d %n",
resp.getRequest().getUrl(), resp.getStatusCode());
resp.getItems().forEach(value -> {
KeyVaultSecret secretWithValue = secretClient.getSecret(value.getName(), value.getVersion());
System.out.printf("Received secret's version with name %s and value %s",
secretWithValue.getName(), secretWithValue.getValue());
});
});
Parameters:
Returns:
name
がキー コンテナーに存在しない場合、リストは空ですlistPropertiesOfSecrets
public PagedIterable
キー コンテナー内のシークレットを一覧表示します。 返される各 SecretProperties には、その識別子と属性のみが設定されます。 シークレット値とそのバージョンは応答に一覧表示されません。 この操作には アクセス許可が必要です secrets/list
。
シークレットを反復処理し、最新の値をフェッチする
次のスニペットは、それぞれ SecretProperties をループし、 を呼び出します getSecret(String name, String version)。 これにより、 KeyVaultSecret 最新バージョンの と の値が取得されます。
for (SecretProperties secret : secretClient.listPropertiesOfSecrets()) {
KeyVaultSecret secretWithValue = secretClient.getSecret(secret.getName(), secret.getVersion());
System.out.printf("Received secret with name %s and value %s",
secretWithValue.getName(), secretWithValue.getValue());
}
シークレットをページごとに反復処理する
次のスニペットは、ページごとにループ SecretProperties し、 を呼び出します getSecret(String name, String version)。 これにより、 KeyVaultSecret 最新バージョンの と の値が取得されます。
secretClient.listPropertiesOfSecrets().iterableByPage().forEach(resp -> {
System.out.printf("Response headers are %s. Url %s and status code %d %n", resp.getHeaders(),
resp.getRequest().getUrl(), resp.getStatusCode());
resp.getItems().forEach(value -> {
KeyVaultSecret secretWithValue = secretClient.getSecret(value.getName(), value.getVersion());
System.out.printf("Received secret with name %s and value %s",
secretWithValue.getName(), secretWithValue.getValue());
});
});
Returns:
listPropertiesOfSecrets
public PagedIterable
キー コンテナー内のシークレットを一覧表示します。 返される各 SecretProperties には、その識別子と属性のみが設定されます。 シークレット値とそのバージョンは応答に一覧表示されません。 この操作には アクセス許可が必要です secrets/list
。
シークレットを反復処理し、最新の値をフェッチする
次のスニペットは、それぞれ SecretProperties をループし、 を呼び出します getSecret(String name, String version)。 これにより、 KeyVaultSecret 最新バージョンの と の値が取得されます。
for (SecretProperties secret : secretClient.listPropertiesOfSecrets(new Context(key1, value2))) {
KeyVaultSecret secretWithValue = secretClient.getSecret(secret.getName(), secret.getVersion());
System.out.printf("Received secret with name %s and value %s",
secretWithValue.getName(), secretWithValue.getValue());
}
Parameters:
Returns:
purgeDeletedSecret
public void purgeDeletedSecret(String name)
回復の可能性なしに、削除されたシークレットを完全に削除します。 この操作は、 論理的な削除が有効な コンテナーでのみ実行できます。 この操作には アクセス許可が必要です secrets/purge
。
Code sample
論理的な削除が有効になっているキー コンテナーから削除されたシークレットを 消去します。 サーバーの応答から状態コードを出力します。
secretClient.purgeDeletedSecret("secretName");
Parameters:
purgeDeletedSecretWithResponse
public Response
回復の可能性なしに、削除されたシークレットを完全に削除します。 この操作は、 論理的な削除が有効な コンテナーでのみ実行できます。 この操作には アクセス許可が必要です secrets/purge
。
Code sample
論理的な削除が有効になっているキー コンテナーから削除されたシークレットを 消去します。 サーバーの応答から状態コードを出力します。
Response<Void> purgeResponse = secretClient.purgeDeletedSecretWithResponse("secretName",
new Context(key1, value1));
System.out.printf("Purge Status Code: %d", purgeResponse.getStatusCode());
Parameters:
Returns:
restoreSecretBackup
public KeyVaultSecret restoreSecretBackup(byte[] backup)
バックアップされたシークレットとそのすべてのバージョンを資格情報コンテナーに復元します。 この操作には アクセス許可が必要です secrets/restore
。
Code sample
キー コンテナー内のシークレットをバックアップ バイト配列から復元します。 応答で返された復元されたシークレットの詳細を出力します。
// Pass the secret backup byte array of the secret to be restored.
byte[] secretBackupByteArray = {};
KeyVaultSecret restoredSecret = secretClient.restoreSecretBackup(secretBackupByteArray);
System.out
.printf("Restored Secret with name %s and value %s", restoredSecret.getName(), restoredSecret.getValue());
Parameters:
Returns:
restoreSecretBackupWithResponse
public Response
バックアップされたシークレットとそのすべてのバージョンを資格情報コンテナーに復元します。 この操作には アクセス許可が必要です secrets/restore
。
Code sample
キー コンテナー内のシークレットをバックアップ バイト配列から復元します。 応答で返された復元されたシークレットの詳細を出力します。
// Pass the secret backup byte array of the secret to be restored.
byte[] secretBackupByteArray = {};
KeyVaultSecret restoredSecret = secretClient.restoreSecretBackupWithResponse(secretBackupByteArray,
new Context(key2, value2)).getValue();
System.out
.printf("Restored Secret with name %s and value %s", restoredSecret.getName(), restoredSecret.getValue());
Parameters:
Returns:
setSecret
public KeyVaultSecret setSecret(KeyVaultSecret secret)
シークレットが存在しない場合は、キー コンテナーに追加します。 名前付きシークレットが存在する場合は、シークレットの新しいバージョンが作成されます。 この操作には アクセス許可が必要です secrets/set
。
の getExpiresOn()、 getContentType()、および getNotBefore() の secret
値は省略可能です。 指定しない場合、 isEnabled() はキー コンテナーによって true に設定されます。
Code sample
キー コンテナーに新しいシークレットを作成します。 応答で返された新しく作成されたシークレットの詳細を出力します。
KeyVaultSecret newSecret = new KeyVaultSecret("secretName", "secretValue")
.setProperties(new SecretProperties().setExpiresOn(OffsetDateTime.now().plusDays(60)));
KeyVaultSecret returnedSecret = secretClient.setSecret(newSecret);
System.out.printf("Secret is created with name %s and value %s%n", returnedSecret.getName(),
returnedSecret.getValue());
Parameters:
Returns:
setSecret
public KeyVaultSecret setSecret(String name, String value)
シークレットが存在しない場合は、キー コンテナーに追加します。 名前付きシークレットが存在する場合は、シークレットの新しいバージョンが作成されます。 この操作には アクセス許可が必要です secrets/set
。
Code sample
キー コンテナーに新しいシークレットを作成します。 応答で返された新しく作成されたシークレットの詳細を出力します。
KeyVaultSecret secret = secretClient.setSecret("secretName", "secretValue");
System.out.printf("Secret is created with name %s and value %s%n", secret.getName(), secret.getValue());
Parameters:
Returns:
setSecretWithResponse
public Response
シークレットが存在しない場合は、キー コンテナーに追加します。 名前付きシークレットが存在する場合は、シークレットの新しいバージョンが作成されます。 この操作には アクセス許可が必要です secrets/set
。
Code sample
キー コンテナーに新しいシークレットを作成します。 応答で返された新しく作成されたシークレットの詳細を出力します。
KeyVaultSecret newSecret = new KeyVaultSecret("secretName", "secretValue")
.setProperties(new SecretProperties().setExpiresOn(OffsetDateTime.now().plusDays(60)));
KeyVaultSecret secret = secretClient.setSecretWithResponse(newSecret, new Context(key1, value1)).getValue();
System.out.printf("Secret is created with name %s and value %s%n", secret.getName(), secret.getValue());
Parameters:
Returns:
updateSecretProperties
public SecretProperties updateSecretProperties(SecretProperties secretProperties)
シークレットに関連付けられている属性を更新します。 キー コンテナー内のシークレットの値は変更できません。 に設定された secretProperties
属性のみが変更されます。 要求で指定されていない属性は変更されません。 この操作には アクセス許可が必要です secrets/set
。
secret
は必須であり、そのフィールドgetName()は getVersion() null にすることはできません。
Code sample
シークレットの最新バージョンを取得し、有効期限を変更し、キー コンテナー内のシークレットを更新します。
SecretProperties secretProperties = secretClient.getSecret("secretName").getProperties();
secretProperties.setExpiresOn(OffsetDateTime.now().plusDays(60));
SecretProperties updatedSecretProperties = secretClient.updateSecretProperties(secretProperties);
KeyVaultSecret updatedSecret = secretClient.getSecret(updatedSecretProperties.getName());
System.out.printf("Updated Secret is returned with name %s, value %s and expires %s%n",
updatedSecret.getName(), updatedSecret.getValue(), updatedSecret.getProperties().getExpiresOn());
Parameters:
Returns:
updateSecretPropertiesWithResponse
public Response
シークレットに関連付けられている属性を更新します。 キー コンテナー内のシークレットの値は変更できません。 に設定された secretProperties
属性のみが変更されます。 要求で指定されていない属性は変更されません。 この操作には アクセス許可が必要です secrets/set
。
secret
は必須であり、そのフィールドgetName()は getVersion() null にすることはできません。
Code sample
シークレットの最新バージョンを取得し、有効期限を変更し、キー コンテナー内のシークレットを更新します。
SecretProperties secretProperties = secretClient.getSecret("secretName").getProperties();
secretProperties.setExpiresOn(OffsetDateTime.now().plusDays(60));
SecretProperties updatedSecretBase = secretClient.updateSecretPropertiesWithResponse(secretProperties,
new Context(key2, value2)).getValue();
KeyVaultSecret updatedSecret = secretClient.getSecret(updatedSecretBase.getName());
System.out.printf("Updated Secret is returned with name %s, value %s and expires %s%n",
updatedSecret.getName(), updatedSecret.getValue(), updatedSecret.getProperties().getExpiresOn());
Parameters:
Returns:
適用対象
Azure SDK for Java