HashiCorp Vault ist ein Plugin, das Sie als Anmeldeinformationsspeicher mit dem Orchestrator verwenden können.
Es sind zwei Plugins enthalten:
- HashiCorp Vault – ein Lese-Schreib-Plugin (Geheimschlüssel werden über den Orchestrator erstellt)
- HashiCorp Vault (schreibgeschützt) – ein schreibgeschütztes Plugin (Sie müssen die Geheimschlüssel im Tresor direkt bereitstellen)
Voraussetzungen
-
Ein Netzwerk, das die Interkonnektivität zwischen dem Orchestrator-Dienst und dem HashiCorp Vault-Server ermöglicht:
- Der API-Port, der von HashiCorp Vault für API-Anforderungen verwendet wird, muss über eine Firewall hinweg geöffnet und über das Internet erreichbar sein. Dieser Port ist
8200
in einer typischen Installation. - If the customer's firewall does not allow connectivity from any internet IP, Orchestrator's IP addresses must be whitelisted. You can find an up-to-date list of IPs on the Orchestrator outbound IP addresses page.
- Der API-Port, der von HashiCorp Vault für API-Anforderungen verwendet wird, muss über eine Firewall hinweg geöffnet und über das Internet erreichbar sein. Dieser Port ist
-
Sie müssen eine der unterstützten Authentifizierungsmethoden konfigurieren:
- AppRole (empfohlen)
- UsernamePassword
- LDAP
- Token
See how to configure authentication.
-
Sie müssen eine der unterstützten Geheimnis-Engines konfigurieren:
- KeyValueV1 – sowohl für das HashiCorp Vault-Plugin als auch für das HashiCorp Vault-Plugin (schreibgeschützt) verfügbar
- KeyValueV2 – sowohl für das HashiCorp Vault-Plugin als auch für das HashiCorp Vault-Plugin (schreibgeschützt) verfügbar
- ActiveDirectory – nur für das HashiCorp Vault-Plugin (schreibgeschützt) verfügbar
-
Die gewählte Authentifizierungsmethode muss über eine Richtlinie verfügen, die die folgenden Fähigkeiten auf dem Pfad zulässt, auf dem Sie Ihre Geheimnisse speichern wollen:
- Für das HashiCorp Vault-Plugin (schreibgeschützt):
read
- Für das HashiCorp Vault-Plugin:
create
,read
,update
,delete
und optionaldelete
im Metadatenpfad, wenn die Secrets-EngineKeyValueV2
verwendet wird.
- Für das HashiCorp Vault-Plugin (schreibgeschützt):
Konfigurieren der Integration
The following is an example of how to configure a development version of HashiCorp Vault, running in a docker container, to be used as a credential store with Orchestrator. The examples should be adapted to your own environment. Please consult the official documentation of HashiCorp Vault for details.
Konfigurieren der Authentifizierung
Zum Erstellen und Lesen von Geheimnissen müssen Sie zunächst die Authentifizierungsmethode konfigurieren, indem Sie die folgenden Schritte ausführen:
- Öffnen Sie eine Shell innerhalb des Containers:
docker exec -it dev-vault sh
- Melden Sie sich als Root an. Stellen Sie sicher, dass das Root-Token in den Protokollen angezeigt wird, um damit eine Umgebungsvariable zu setzen, indem Sie den folgenden Befehl ausführen:
export VAULT_TOKEN=s.hA7RJ5lBqSnKUPd8nrQBaK1f
- Überprüfen Sie den Vault-Status, indem Sie den folgenden Befehl ausführen:
vault status
- Fügen Sie ein Dummy-Geheimnis für den Orchestrator in den KV-Speicher ein:
vault kv put secret/applications/orchestrator/testSecret supersecretpassword=123456
- Gewähren Sie dem Orchestrator Zugriff auf den neu erstellten
secret/applications/orchestrator
-Pfad. Dazu müssen Sie zuerst eine Richtlinie zum Lesen und Schreiben in diesem Pfad und allen seinen Unterpfaden erstellen, indem Sie den folgenden Befehl ausführen:
cat <<EOF | vault policy write orchestrator-policy -
path "secret/data/applications/orchestrator/*" {
capabilities = ["create", "read", "update", "delete"]
}
path "secret/metadata/applications/orchestrator/*" {
capabilities = ["delete"]
}
EOF
Hinweis:
Wenn Sie eine KeyValueV2-Geheimnis-Engine verwenden, werden die Geheimnisse am Pfad
<mount>/data/<secret-path>
geschrieben und abgerufen, im Gegensatz zu<mount>/<secret-path>
in KeyValueV1. Die CLI-Befehle werden nicht geändert (d. h. Sie geben keine Daten in Ihrem Pfad an).
Es ändert jedoch die Richtlinien, da Funktionen auf den realen Pfad angewendet werden. Im vorherigen Beispiel ist der Pfadsecret/data/applications/orchestrator/*
, da wir mit einer KeyValueV2-Secrets-Engine arbeiten. Bei Verwendung eines KeyValueV1 wäre der Pfadsecret/applications/orchestrator/*
gewesen.Die Funktion zum Löschen im Metadatenpfad ist nur erforderlich, wenn Sie sicherstellen möchten, dass der Orchestrator beim Überprüfen der Konnektivität keine Testschlüssel hinterlässt. Wenn diese Fähigkeit nicht gewährt wird, wird ein Schlüssel erstellt und bei der Erstellung des Anmeldeinformationsspeichers im Orchestrator zurückgelassen.
- Aktivieren Sie die Authentifizierung mit der
userpass
-Authentifizierungsmethode, erstellen Sie dann einen Benutzer für den Orchestrator und weisen Sie die zuvor erstellte Richtlinie zu:
vault auth enable userpass
vault write auth/userpass/users/orchestrator password=123456 policies=orchestrator-policy
Hinweis:
Der Orchestrator unterstützt mehrere Authentifizierungsmodi. In der Dokumentation zu HashiCorp Vault finden Sie weitere Informationen zu deren Konfiguration.
- Überprüfen Sie, ob Sie alles richtig konfiguriert haben, indem Sie sich anmelden und versuchen, das zuvor erstellte Geheimnis zu lesen:
vault login -method=userpass username=orchestrator password=123456
Output of this command:
WARNING! The VAULT_TOKEN environment variable is set! This takes precedence
over the value set by this command. To use the value set by this command,
unset the VAULT_TOKEN environment variable or set it to the token displayed
below.
Success! You are now authenticated. The token information displayed below
is already stored in the token helper. You do NOT need to run "vault login"
again. Future Vault requests will automatically use this token.
Key Value
--- -----
token s.nwombWQH3gGPDhJumRzxKqgI
token_accessor aGJL6Pzc6fRRuP8d8tTjS2Kj
token_duration 768h
token_renewable true
token_policies ["default" "orchestrator-policy"]
identity_policies []
policies ["default" "orchestrator-policy"]
token_meta_username orchestratorWARNING! The VAULT_TOKEN environment variable is set! This takes precedence
over the value set by this command. To use the value set by this command,
unset the VAULT_TOKEN environment variable or set it to the token displayed
below.
Success! You are now authenticated. The token information displayed below
is already stored in the token helper. You do NOT need to run "vault login"
again. Future Vault requests will automatically use this token.
Key Value
--- -----
token s.nwombWQH3gGPDhJumRzxKqgI
token_accessor aGJL6Pzc6fRRuP8d8tTjS2Kj
token_duration 768h
token_renewable true
token_policies ["default" "orchestrator-policy"]
identity_policies []
policies ["default" "orchestrator-policy"]
token_meta_username orchestrator
- Nehmen Sie dieses Token und setzen Sie es anstelle des Stammtokens. Dann versuchen Sie, das Testgeheimnis zu lesen:
export VAULT_TOKEN=s.nwombWQH3gGPDhJumRzxKqgI
vault kv get secret/applications/orchestrator/testSecret
Output of this command:
====== Metadata ======
Key Value
--- -----
created_time 2020-10-12T06:24:41.7827631Z
deletion_time n/a
destroyed false
version 1
=========== Data ===========
Key Value
--- -----
supersecretpassword 123456====== Metadata ======
Key Value
--- -----
created_time 2020-10-12T06:24:41.7827631Z
deletion_time n/a
destroyed false
version 1
=========== Data ===========
Key Value
--- -----
supersecretpassword 123456
Hinweis:
Sie können auch den appRole-Orchestrator aktivieren, indem Sie den folgenden Befehl ausführen:
/ # vault auth enable approle / # vault write auth/approle/role/orchestrator policies=orchestrator-policy / # vault read auth/approle/role/orchestrator/role-id / # vault write -f auth/approle/role/orchestrator/secret-id
Sie verfügen jetzt über eine Rollen-ID und eine Geheimnis-ID zum Konfigurieren im Orchestrator.
Konfigurieren der Active Directory Geheimnis-Engine
Führen Sie die folgenden Schritte aus, um die Active Directory Geheimnis-Engine zu konfigurieren:
- Aktivieren Sie die Active Directory Geheimnis-Engine, indem Sie den folgenden Befehl ausführen:
vault secrets enable ad
- Konfigurieren Sie die Anmeldeinformationen, die HashiCorp Vault für die Kommunikation mit Active Directory verwendet, um Kennwörter zu generieren:
vault write ad/config \
binddn=$USERNAME \
bindpass=$PASSWORD \
url=ldaps://138.91.247.105 \
userdn='dc=example,dc=com'
- Konfigurieren Sie eine Rolle, die einen Namen im HashiCorp Vault einem Konto in Active Directory zuweist. Wenn Anwendungen Kennwörter anfordern, werden die Einstellungen für die Kennwortrotation von dieser Rolle verwaltet.
vault write ad/roles/orchestrator service_account_name="my-application@example.com"
- Gewähren Sie
orchestrator
Zugriff auf seine Anmeldeinformationen beiad/creds/orchestrator
mithilfe einer Authentifizierungsmethode, z. B. AppRole.
cat <<EOF | vault policy write orchestrator-policy -
path "ad/creds/orchestrator" {
capabilities = ["read"]
}
EOF
Verwenden von HashiCorp Vault (schreibgeschützt)
Wenn Sie das HashiCorp Vault-Plugin (schreibgeschützt) verwenden, ist der Vault-Administrator für die korrekte Bereitstellung der Geheimnisse verantwortlich, die der Orchestrator verwenden wird. Das Format, in dem diese Geheimnisse bereitgestellt werden müssen, unterscheidet sich zwischen den verschiedenen Geheimnistypen (Asset- oder Roboterkennwort) und den verschiedenen Geheimnis-Engines.
Anweisungen zum Bereitstellen der Geheimnisse finden Sie unter:
Speichern der Anmeldeinformationen von Unattended-Robotern im HashiCorp Vault (schreibgeschützt)
Speichern von Assets im HashiCorp Vault (schreibgeschützt)
Vor etwa einem Monat aktualisiert