Sensible Daten mit dem Secret Manager-Connector schützen und speichern

Secret Manager ist ein sicheres und praktisches Speichersystem API-Schlüssel, Passwörter, Zertifikate und andere sensible Daten Secret Manager bietet einen zentralen Ort und eine Single Source of Truth für Verwaltung, Zugriff und Prüfung in Google Cloud.

Sie können das Tool „Workflows“ Connector für die Secret Manager API um innerhalb eines Workflows auf Secret Manager zuzugreifen. Dies vereinfacht die da der Connector die Formatierung Anfragen und stellt Methoden und Argumente bereit, sodass Sie keine die Details der Secret Manager API. Der Connector hat auch für die Verarbeitung von Wiederholungsversuchen und lang andauernden Vorgängen. Weitere Informationen Weitere Informationen zur Verwendung von Workflows-Connectors finden Sie unter Connectors

Dem Workflows-Dienstkonto Zugriff auf Secret Manager gewähren

Secret Manager nutzt Identity and Access Management (IAM) für den Zugriff Steuerung. Wenn Sie ein Secret erstellen, verwalten, auflisten oder darauf zugreifen möchten, müssen die entsprechenden IAM-Berechtigungen müssen auf Projektebene und auf auf der Ebene einzelner Ressourcen. Weitere Informationen finden Sie unter Zugriffssteuerung mit IAM.

Workflows verwendet Dienstkonten, um Workflows Zugriff auf Google Cloud-Ressourcen Bis auf eine Secret-Version zugreifen müssen, Rolle „Secret Manager-Secret-Zugriffer“ gewähren (roles/secretmanager.secretAccessor) für das Secret, das Projekt, den Ordner oder Organisation mit dem Dienstkonto. Weitere Informationen zu Workflow mit einem vom Nutzer verwalteten Dienstkonto bereitstellen

APIs aktivieren

Vor der Verwendung des Workflows Anschluss für die Secret Manager API verwenden, aktivieren Sie die Secret Manager und Workflows API.

Console

APIs aktivieren

gcloud

  gcloud services enable secretmanager.googleapis.com workflows.googleapis.com

Connector-Aufruf aufrufen

Ähnlich wie beim Aufrufen eines HTTP-Endpunkts sind für einen Connector-Aufruf call und args erforderlich . Weitere Informationen finden Sie unter Aufrufen eines Connector-Aufrufs

Neben einem Aufrufschritt können Sie die Hilfsmethoden auch in einem Ausdruck wie diesen:

${googleapis.secretmanager.v1.projects.secrets.versions.accessString(secret_id, version, project_id)}

Sie können beispielsweise die Hilfsmethode accessString verwenden, um das Secret abzurufen Daten als Zeichenfolge. Dies ist einfacher als die Verwendung der access API als Secret-Daten automatisch in ein Zeichenfolgenformat decodiert.

Sie können auch die Hilfsmethode addVersionString verwenden, um einen neuen Secret-Wert hinzuzufügen einem vorhandenen Secret hinzu. Dies ist einfacher als die Verwendung der addVersion API als geheime Daten automatisch in einen base-64-String codiert, der von addVersion

Secret mit dem Secret Manager-Connector abrufen

Im folgenden Workflow wird gezeigt, wie Secret Manager verwendet wird Connector, um ein Secret abzurufen.

YAML

# This workflow demonstrates how to use the Secret Manager connector:
# Retrieve a secret using three different methods
# Expected output: the secret data (thrice)
- init:
    assign:
      - project_id: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
      - secret_id: "test-secret"  # Make sure you have this secret and it has a version of 1.
      - version: "1"
# Add data to an existing secret without base-64 encoding
- add_version_string:
    call: googleapis.secretmanager.v1.projects.secrets.addVersionString
    args:
      secret_id: ${secret_id}
      project_id: ${project_id}
      data: "a new secret"
# Retrieve the secret in string format without base-64 decoding and assume
# that the secret data is a valid UTF-8 string; if not, raise an error
- access_string_secret:
    call: googleapis.secretmanager.v1.projects.secrets.versions.accessString
    args:
      secret_id: ${secret_id}
      version: ${version}  # if not set, "latest" is used
      project_id: ${project_id}
    result: str_secret
# Retrieve the secret in string format without base-64 decoding
- access_secret:
    call: googleapis.secretmanager.v1.projects.secrets.versions.access
    args:
      name: ${"projects/" + project_id + "/secrets/" + secret_id + "/versions/" + version}
    result: base64_encoded_secret
# Retrieve the secret using positional arguments in an expression
- expression:
    assign:
      - secret_str_from_exp: ${googleapis.secretmanager.v1.projects.secrets.versions.accessString(secret_id, version, project_id)}
- the_end:
    return:
      - ${str_secret}
      - ${text.decode(base64.decode(base64_encoded_secret.payload.data))}
      - ${secret_str_from_exp}

JSON

[
  {
    "init": {
      "assign": [
        {
          "project_id": "${sys.get_env(\"GOOGLE_CLOUD_PROJECT_ID\")}"
        },
        {
          "secret_id": "test-secret"
        },
        {
          "version": "1"
        }
      ]
    }
  },
  {
    "add_version_string": {
      "call": "googleapis.secretmanager.v1.projects.secrets.addVersionString",
      "args": {
        "secret_id": "${secret_id}",
        "project_id": "${project_id}",
        "data": "a new secret"
      }
    }
  },
  {
    "access_string_secret": {
      "call": "googleapis.secretmanager.v1.projects.secrets.versions.accessString",
      "args": {
        "secret_id": "${secret_id}",
        "version": "${version}",
        "project_id": "${project_id}"
      },
      "result": "str_secret"
    }
  },
  {
    "access_secret": {
      "call": "googleapis.secretmanager.v1.projects.secrets.versions.access",
      "args": {
        "name": "${\"projects/\" + project_id + \"/secrets/\" + secret_id + \"/versions/\" + version}"
      },
      "result": "base64_encoded_secret"
    }
  },
  {
    "expression": {
      "assign": [
        {
          "secret_str_from_exp": "${googleapis.secretmanager.v1.projects.secrets.versions.accessString(secret_id, version, project_id)}"
        }
      ]
    }
  },
  {
    "the_end": {
      "return": [
        "${str_secret}",
        "${text.decode(base64.decode(base64_encoded_secret.payload.data))}",
        "${secret_str_from_exp}"
      ]
    }
  }
]

Nächste Schritte