Terraform leverantör
Bitwarden erbjuder en Terraform-leverantör som kan hämta information om hemligheter, samt skapa och manipulera hemligheter, för säker hantering av dina infrastrukturhemligheter när du använder Terraform. Ytterligare leverantörsdokumentation finns tillgänglig i Bitwarden Terraform Provider-förrådet.
Krav
Terraform version 1.5 eller högre.
En Secrets Manager-organisation med ett maskinkonto och bifogad åtkomsttoken.
tip
Vi rekommenderar:
Använd webbappen Secrets Manager för att diktera vilka projekt och hemligheter ditt maskinkonto har tillgång till innan du fortsätter med konfigurationen.
Använd Secrets Manager-webbappen för att generera en åtkomsttoken när du är redo att konfigurera Terraform-leverantören, eftersom åtkomsttokenvärden endast kan kopieras vid skapandet.
Konfiguration
Som ett minimum måste din Terraform-konfigurationsfil(er) (.tf
) innehålla följande:
Bashterraform {
required_providers {
bitwarden-secrets = {
source = "registry.terraform.io/bitwarden/bitwarden-secrets"
}
}
}
Flera valfria attribut kan läggas till dina .tf-filer
. Vissa av dessa värden bör anses vara känsliga. Alla dessa värden kan istället tillhandahållas av en miljövariabel, men alla dessa värden måste tillhandahållas med någon av dessa två metoder:
Attribut | Ekvivalent variabel | Beskrivning |
---|---|---|
|
| (Känslig) Åtkomsttokenvärdet för det konfigurerade maskinkontot. Detta kommer att ge Terraform-leverantören tillgång till endast specifik data i Secrets Manager. |
|
| Den unika identifieraren för din organisation. Tillgängligt från adressfältet när du är inloggad på webbappen Secrets Manager. |
|
| URI för Bitwarden Secrets Manager |
|
| URI för Secrets Manager/ |
En .tf-fil
med alla attribut uttryckligen inkluderade, istället för att skickas av miljövariabler, bör se ut så här:
Bashterraform {
required_providers {
bitwarden-secrets = {
source = "registry.terraform.io/bitwarden/bitwarden-secrets"
}
}
}
provider "bitwarden-secrets" {
api_url = "https://api.bitwarden.com"
identity_url = "https://identity.bitwarden.com"
access_token = "<access_token_value>"
organization_id = "< organization_unique_identifier>"
}
Snabbstart
Följande steg leder dig genom att ta med en hemlighet som finns i Bitwarden Secrets Manager under Terraform-hantering genom att lägga till den i både tillstånd och konfiguration:
Använd
bitwarden-sm_
secret-resursen för att lägga till en hemlighet till en.tf-konfigurationsfil
:Bashresource "bitwarden-secrets_secret" "my_secret" {}
Använd kommandot
terraform import
i Terraform CLI för att importera hemligheten till staten, och ersätt det angivna platshållarvärdet med den unika identifieraren för hemligheten (som kan kopieras direkt från den hemliga posten i Secrets Manager-webbappen):Bashterraform import "bitwarden-secrets_secret.my_secret" "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
Med din hemlighet importerad till Terraform-tillståndet, använd kommandot
terraform show
i Terraform CLI för att visa importerade data. Kopiera nyckelvärdet från utgången och lägg till det i.tf-konfigurationen
för att slutföra installationen:Bashresource "bitwarden-secrets_secret" "my_secret" { key = "db_admin_password" }
Bitwarden-sm_secret-resursen
kommer att använda nyckelvärdet (i det här fallet db_admin_password
) för att manipulera hemligheten i ytterligare operationer, för att säkerställa att hemligheten förblir säker och synkroniserad mellan Bitwarden Secrets Manager och Terraform.
Datakällor
bitwarden-sm_projects
Datakällan bitwarden-sm_projects
hämtar en lista över alla projekt som är tillgängliga för maskinkontot. Följande är ett exempel på ett datablock
med en bitwarden-sm_projects
datakälladeklaration och ett exempel på ett utdatablock
som refererar till det med hjälp av .projects-attributet:
Bashdata "bitwarden-secrets_projects" "example" {}
output "example" {
value = data.bitwarden-secrets_projects.projects
}
För varje projekt kan följande attribut exporteras i output:
creation_date
: (String) Tidsstämpeln vid vilken projektet skapades.id
: (String) Den unika identifieraren för projektet.name
: (String) Namnet på projektet.organisation_id
: (String) Den unika identifieraren för den organisation som projektet tillhör.revision_date
: (String) Tidsstämpeln vid vilken projektet senast reviderades.
bitwarden-sm_list_secrets
Datakällan bitwarden-sm_list_secrets
hämtar en lista över alla hemligheter som är tillgängliga för maskinkontot. Följande är ett exempel på ett datablock
med en bitwarden-sm_list_secrets
datakälladeklaration och ett exempel på ett utdatablock
som refererar till det med hjälp av .secrets-attributet:
Bashdata "bitwarden-secrets_list_secrets" "example" {}
output "example" {
value = data.bitwarden-secrets_list_secrets.secrets
}
För varje hemlighet kan följande attribut exporteras i utdata:
id
: (String) Den unika identifieraren för hemligheten.key
: (String) Nyckeln som är associerad med hemligheten, kallad "Namn" i Secrets Manager UI.
note
Datakällan bitwarden-sm_list_secrets
hämtar inte hemliga värden.
bitwarden-sm_secret
Datakällan bitwarden-sm_secret
hämtar en viss hemlighet, som måste vara tillgänglig för maskinkontot. Följande argument krävs när du hämtar en hemlighet med datakällan bitwarden-sm_secret
:
id
: (String) Den unika identifieraren för hemligheten att hämta. Detta värde kan kopieras direkt från den hemliga posten i webbappen Secrets Manager.
Följande är ett exempel på ett datablock
med en bitwarden-sm_secret
datakälladeklaration och ett exempel på ett utdatablock
som refererar till alla exporterbara attribut:
Bashdata "bitwarden-secrets_secret" "example" {
id = "e6a8066c-81e6-428e-bf5d-b1b900fe1b42"
}
output "example" {
value = {
id = data.bitwarden-secrets_secret.secret.id
key = data.bitwarden-secrets_secret.secret.key
value = data.bitwarden-secrets_secret.secret.value #The actual secret value is marked sensitive and will not be printed to stdout
note = resource.bitwarden-secrets_secret.secret.note
project_id = resource.bitwarden-secrets_secret.secret.project_id
organization_id = resource.bitwarden-secrets_secret.secret.organization_id
creation_date = resource.bitwarden-secrets_secret.secret.creation_date
revision_date = resource.bitwarden-secrets_secret.secret.revision_date
}
}
För varje hemlighet kan följande attribut exporteras i utdata:
id
: (String) Den unika identifieraren för hemligheten.key
: (String) Nyckeln som är associerad med hemligheten, kallad "Namn" i Secrets Manager UI.värde
: (String) Värdet som är associerat med hemligheten. Anses som känslig och har aldrig skrivits ut till standard.note
: (Sträng) All text som sparas i hemlighetens anteckningsfält.project_id
: (String) Den unika identifieraren för projektet hemligheten tillhör.organisation_id
: (String) Den unika identifieraren för organisationen hemligheten tillhör.creation_date
: (String) Tidsstämpeln vid vilken hemligheten skapades.revision_date
: (String) Tidsstämpeln vid vilken hemligheten senast reviderades.
Resurser
bitwarden-sm_secret
Bitwarden-sm_
secret-resursen kan användas för att skapa nya eller hantera befintliga hemligheter i Bitwarden Secrets Manager. Som ett minimum krävs följande argument för en bitwarden-sm_secret
resursblockdeklaration:
key
: (String) Nyckeln som är associerad med hemligheten, kallad "Namn" i Secrets Manager UI.
Följande är ett exempel på ett resursblock
med en bitwarden-sm_secret
resursdeklaration:
Bashresource "bitwarden-secrets_secret" "db_admin_secret" {
key = "db_admin_password"
value = var.value #It is not recommended to provide the actual secret value via configuration file! By using a terraform variable, users can inject the secret value during runtime via environment variables.
project_id = var.project_id
note = "The secret value was provided via terraform configuration."
}
Ytterligare valfria argument, som ses i exemplet ovan, inkluderar:
värde
: (String) Värdet på hemligheten. Det rekommenderas inte att ange det hemliga värdet via konfigurationsfilen. Genom att använda en terraform-variabel kan användare injicera det hemliga värdet under körning via miljövariabler.project_id
: (String) Den unika identifieraren för projektet hemligheten ska läggas till. Maskinkontot måste ha åtkomst till det projektet.note
: (Sträng) Vilken text som helst som ska sparas i hemlighetens anteckningsfält.
Hemlig värdegenerering
Om inget hemligt värde tillhandahålls kommer Terraform-leverantören att generera ett åt dig. Detta är det föreslagna tillvägagångssättet. Du kan ange valfria attribut för att anpassa värdegenerering, till exempel:
Bashresource "bitwarden-secrets_secret" "db_admin_secret" {
key = "db_admin_password"
project_id = var.project_id
length = 32
special = true
min_special = 5
}
För varje hemlighet kan följande attribut användas för att anpassa värdegenerering:
avoid_ambiguous
: (Boolean) Standardinställningen ärfalsk
. När det är satt tillsant kommer
det genererade värdet inte att innehålla tvetydiga tecken (I
,l
,1
,0
,0
).längd
: (Nummer) Standardinställningen är64
tecken. När det är inställt på ett annat nummer kommer det genererade värdet att vara det antalet tecken.gemener
: (Boolesk) Standardinställningen ärsann
. Om det är inställt påfalse
kommer det genererade värdet inte att innehålla gemener.min_lowercase
: (Number) Ignoreras omgemener
ärfalska
. Om det är inställt på ett tal kommer det genererade värdet att innehålla minst det antalet gemener (måste vara mellan 1-9).
versaler
: (Boolesk) Standardinställningen ärsann
. Om det är inställt påfalse
kommer det genererade värdet inte att innehålla versaler.min_uppercase
: (Nummer) Ignoreras omversaler
ärfalska
. Om det är inställt på ett tal kommer det genererade värdet att innehålla minst det antalet versaler (måste vara mellan 1-9).
siffror
: (Booleska) Standardinställningen ärsann
. Om det är inställt påfalse kommer
det genererade värdet inte att innehålla nummer (0
-9
).min_numbers
: (Number) Ignoreras omsiffror
ärfalska
. Om det är inställt på ett tal kommer det genererade värdet att innehålla minst det antalet siffror (måste vara mellan 1-9).
special
: (Boolesk) Standardinställningen ärsann
. Om inställt påfalse
kommer det genererade värdet inte att innehålla specialtecken (@
&,, #, $, %, ^,
*
).min_special
: (Number) Ignoreras omspecial
ärfalskt
. Om det är inställt på ett tal kommer det genererade värdet att innehålla minst det antalet specialtecken (måste vara mellan 1-9).