Skip to main content
Version: 2.0.0

Vault

OCI Vault can be used both as a Spring property source and as an application bean for managing secrets.

Dependency Coordinates

Maven

<dependency>
<groupId>com.oracle.cloud.spring</groupId>
<artifactId>spring-cloud-oci-starter-vault</artifactId>
</dependency>

Gradle

dependencies {
implementation("com.oracle.cloud.spring:spring-cloud-oci-starter-vault")
}

Using Vault as a Property Source

Secrets can be loaded dynamically into the Spring environment:

spring:
cloud:
oci:
config:
type: file
region:
static: us-ashburn-1
vault:
enabled: true
compartment: ${OCI_COMPARTMENT_ID}
property-refresh-interval: 10000ms
property-sources:
- vault-id: ${OCI_VAULT_ID}
@Value("${secretname}")
String secretValue;

Using VaultTemplate

The starter also auto-configures a VaultTemplate bean for secret operations.

spring:
cloud:
oci:
config:
type: file
region:
static: us-ashburn-1
vault:
compartment: ${OCI_COMPARTMENT_ID}
vault-id: ${OCI_VAULT_ID}
enabled: true
@Autowired
private VaultTemplate vaultTemplate;

public String getSecretByName(String secretName) {
GetSecretBundleByNameResponse bundle = vaultTemplate.getSecret(secretName);
return vaultTemplate.decodeBundle(bundle);
}

Configuration

NameDescriptionRequiredDefault
spring.cloud.oci.vault.enabledEnables the OCI Vault APIsNotrue
spring.cloud.oci.vault.compartmentCompartment for Vault APIs and property sourcesYes
spring.cloud.oci.vault.vault-idVault OCID for Vault APIsYes
spring.cloud.oci.vault.property-refresh-intervalRefresh interval for property reloadNo10m
spring.cloud.oci.vault.property-sourcesList of Vaults to use as property sourcesNo
spring.cloud.oci.vault.property-sources[i].vault-idVault OCID for a property source entryYes

Sample

See spring-cloud-oci-vault-sample.