Secrets ManagerIntegrationer

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

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:

Bash
terraform { 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:

En .tf-fil med alla attribut uttryckligen inkluderade, istället för att skickas av miljövariabler, bör se ut så här:

Bash
terraform { 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:

  1. Använd bitwarden-sm_secret-resursen för att lägga till en hemlighet till en .tf-konfigurationsfil:

    Bash
    resource "bitwarden-secrets_secret" "my_secret" {}

  2. 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):

    Bash
    terraform import "bitwarden-secrets_secret.my_secret" "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
  3. 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:

    Bash
    resource "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:

Bash
data "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:

Bash
data "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:

Bash
data "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:

Bash
resource "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:

Bash
resource "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 är falsk. När det är satt till sant kommer det genererade värdet inte att innehålla tvetydiga tecken (I, l, 1, 0, 0).

  • längd: (Nummer) Standardinställningen är 64 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 är sann. Om det är inställt på false kommer det genererade värdet inte att innehålla gemener.

    • min_lowercase: (Number) Ignoreras om gemener är falska. 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 är sann. Om det är inställt på false kommer det genererade värdet inte att innehålla versaler.

    • min_uppercase: (Nummer) Ignoreras om versaler är falska. 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 är sann. Om det är inställt på false kommer det genererade värdet inte att innehålla nummer (0 - 9).

    • min_numbers: (Number) Ignoreras om siffror är falska. 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 är sann. Om inställt på false kommer det genererade värdet inte att innehålla specialtecken (@, #, $, %, ^, &, *).

    • min_special: (Number) Ignoreras om special är falskt. 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).