閉じる

Spring Vault

2.2.2.RELEASE

導入

Spring Vault は、おなじみの Spring の抽象化と、秘密のアクセス、保存、および取り消しのためのクライアント側サポートを提供します。Vault と対話するための低レベルおよび高レベルの抽象化を提供し、インフラストラクチャの懸念からユーザーを解放します。

HashiCorp の Vault (英語) を使用すると、すべての環境にわたるアプリケーションの外部秘密データを管理する中心的な場所があります。Vault は、アプリケーションデータ、リモートアプリケーション / リソースのユーザー名 / パスワードなどの静的および動的な秘密を管理し、MySQL、PostgreSQL、Apache Cassandra、Consul、AWS などの外部サービスの資格情報を提供できます。

機能

  • Java ベースの @Configuration クラスを使用した Spring 構成のサポート。

  • 一般的な Mongo 操作を実行する生産性を向上させる VaultTemplate ヘルパークラス。ドキュメントと POJO 間の統合オブジェクトマッピングが含まれます。

  • サポートされている認証メカニズム:

    • トークン

    • AppRole

    • AWS-EC2

    • AWS-IAM

    • Azure MSI

    • 証明書 (PKI)

    • Cubbyhole

    • GCP-GCE

    • GCP-IAM

    • Kubernetes

    • Pivotal CloudFoundry

  • アノテーションベースの @VaultPropertySource 統合

  • 再生可能なシークレットのサポート

  • Spring の変換サービスと統合された機能豊富なオブジェクトマッピング

  • アノテーションベースのマッピングメタデータですが、他のメタデータ形式をサポートするために拡張可能

  • カスタムクエリメソッドのサポートを含む、リポジトリインターフェースの自動実装。

VaultTemplate の設定

@Configuration
class VaultConfiguration extends AbstractVaultConfiguration {

  @Override
  public VaultEndpoint vaultEndpoint() {
    return new VaultEndpoint();
  }

  @Override
  public ClientAuthentication clientAuthentication() {
    return new TokenAuthentication(" … ");
  }
}

VaultTemplate を注入して使用する

public class Example {

  // inject the actual template
  @Autowired
  private VaultOperations operations;

  public void writeSecrets(String userId, String password) {

    Map<String, String> data = new HashMap<String, String>();
    data.put("password", password);

    operations.write(userId, data);
  }

  public Person readSecrets(String userId) {

    VaultResponseSupport<Person> response = operations.read(userId, Person.class);
    return response.getBody();
    }
}

Vault PropertySource

@VaultPropertySource(value = "aws/creds/s3",
  propertyNamePrefix = "aws."
  renewal = Renewal.RENEW)
public class MyConfig {

}

public class Example {

  // inject the actual values
  @Value("${aws.access_key}")
  private String awsAccessKey;

  @Value("${aws.secret_key}")
  private String awsSecretKey;

  public InputStream getFileFromS3(String filenname) {
    //  …
  }
}

Spring Boot 構成

Spring Initializr

プロジェクトのクイックスタート

Spring Initializr (英語) を使用してアプリケーションをブートストラップします。

ドキュメント

Spring プロジェクト別に用意されています。プロジェクトの機能を使用する方法と、それを使用して達成できることを詳細に説明しています。
2.2.2.RELEASE CURRENT GA リファレンスドキュメント (英語) API ドキュメント (英語)
2.3.0-SNAPSHOT SNAPSHOT
2.3.0-M1 PRE リファレンスドキュメント (英語) API ドキュメント (英語)
2.2.3.BUILD-SNAPSHOT SNAPSHOT
2.1.6.BUILD-SNAPSHOT SNAPSHOT
2.1.5.RELEASE GA リファレンスドキュメント (英語) API ドキュメント (英語)