Türchen #7: Terraform - das Problem mit User Credentials
Von Dirk Piethan am 7. Dezember 2019
Sicherer Umgang mit Zugriffschlüsseln und Passwörtern
Im Folgenden ist zu sehen, wie schnell mit Terraform erzeugte Credentials mithilfe von terraform output
nach Keybase.io oder GPG exportiert werden,
ohne dass der Anwender mit den Daten in Kontakt kommt.
Voraussetzungen
Es müssen Keybase.io und die GPG Suite auf Deinem System eingerichtet sein.
Terraform Template
Im diesem simplen Beispiel wird der Benutzer “example” mit einem Access-Key angelegt. Mit “pgp_key” wird Terraform der öffentlich PGP-Schlüssel mitgegeben, damit wird dann der Zugriffsschlüssel im Output verschlüsselt.
resource "aws_iam_user" "example" {
name = "example"
path = "/"
force_destroy = true
}
resource "aws_iam_access_key" "example" {
user = aws_iam_user.example.name
pgp_key = "keybase:<EIN_KEYBASE_BENUTZERNAME>"
}
output "access_key" {
value = aws_iam_access_key.example.id
}
output "encrypted_secret" {
value = aws_iam_access_key.example.encrypted_secret
}
Der Export der Schlüssel
Mit dem Parameter output kann der Zugriffsschlüssel in Richtung Keybase oder GPG exportiert werden.
Für Keybase.io
terraform output encrypted_secret | base64 --decode | keybase pgp decrypt
Für GPG
terraform output encrypted_secret | base64 --decode | gpg --decrypt