Weitergabe von SAML-Attributen konfigurieren

Auf dieser Seite wird beschrieben, wie Sie die Security Assertion Markup Language aktivieren und verwenden (SAML) Attributweitergabe. Mit dieser Funktion können Sie SAML-Daten propagieren Attribute von einem Identitätsanbieter zu Anwendungen, die durch Identity-Aware Proxy (IAP). Beim Übertragen von SAML-Attributen können Sie festlegen, welche Attribute weitergegeben und wie sie geliefert werden sollen.

Hinweise

Wenn Sie die Funktion zur Weitergabe von SAML-Attributen verwenden möchten, benötigen Sie eine Chrome Enterprise Premium-Lizenz.

Sie sollten mit der SAML V2.0-Spezifikation für Assertions und -Protokolle vertraut sein.

Verstehen, wie die Daten verarbeitet werden

Bevor Sie die Weitergabe von SAML-Attributen aktivieren, sollten Sie sich mit der Funktionsweise Google Cloud verwaltet die Daten und welche Art von Informationen Sie und nicht über diesen Kanal hinausgehen.

Sie können IAP so konfigurieren, dass ein oder mehrere Attribute in die Daten, die sie Ihren geschützten Anwendungen zur Verfügung stellt. Wenn Sie SSO über die Identität eines Drittanbieters Anbieter und Ihr Identitätsanbieter eine <AttributeStatement> in die SAML-Assertion einfügt, Google Cloud speichert die Attribute, die mit dem Google-Kontositzung. Wenn eine Google-Kontositzung abläuft, wird ein asynchroner die Informationen innerhalb einer Woche dauerhaft entfernt. Sie können die Gültigkeitsdatum.

Verwenden Sie die Weitergabe von SAML-Attributen nicht für sensible, personenidentifizierbare Informationen. personenidentifizierbare Informationen wie Anmeldedaten für das Konto oder ein amtlicher Ausweis Daten von Karteninhabern, Bankkonten, Gesundheitsinformationen oder vertrauliche Hintergrundinformationen.

Weitergabe von SAML-Attributen aktivieren

Aktivieren Sie die Weitergabe von SAML-Attributen, indem Sie in Google Workspace ein SSO-Profil erstellen und dann aktualisieren. IAP-Einstellungen mithilfe der Google Cloud CLI oder REST API ändern.

Console

  1. Rufen Sie in der Google Cloud Console die Seite "IAP" auf.
    Zu IAP
  2. Öffnen Sie die Einstellungen für eine Ressource und scrollen Sie zu Attributpropagierung.
  3. Wählen Sie Attributweitergabe aktivieren aus und klicken Sie dann auf Speichern.
  4. Geben Sie auf dem Tab SAML Attributes (SAML-Attribute) die Attribute ein, die Sie im folgenden Format weitergegeben werden: attribute1, attribute2, attribute3

    Sie können die Attribute auch mithilfe eines benutzerdefinierten Ausdrucks eingeben. werden die Attribute für Ihren benutzerdefinierten Ausdruck in der SAML-Datei Attribute. Verwenden Sie das folgende Ausdrucksformat für Ihre Attribute, die auf dem Tab SAML-Attribute angezeigt werden sollen:
    attributes.saml_attributes.filter(attribute, attribute.name in ['attribute', 'attribute2', 'attribute1'])

  5. Wählen Sie unter Zu bestandene Anmeldedatentypen mindestens ein Attributformat aus. vom IdP an die Anwendungen übergeben werden.

gcloud

Führen Sie die folgenden IAP-gcloud CLI-Befehle aus, um die Einstellungen zur Weitergabe von SAML-Attributen zu aktualisieren:

gcloud iap settings set SETTING_FILE [--folder=FOLDER --organization=ORGANIZATION --project=PROJECT> --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION] [GCLOUD_WIDE_FLAG …]

Ersetzen Sie Folgendes:

  • FOLDER: Der Ordner, in dem sich die Anwendung befindet.
  • ORGANIZATION: Die Organisation, in der sich Ihre Anwendung befindet.
  • PROJECT: Das Projekt, in dem sich Ihre Anwendung befindet.
  • RESOURCE_TYPE ist der Ressourcentyp.
  • SERVICE: Der Dienst.
  • VERSION: Die Versionsnummer.

YAML:

applicationSettings:
 attributePropagationSettings:
  expression: CEL_EXPRESSION
  outputCredentials: ARRAY[OUTPUT_CREDENTIALS]
  enable: BOOLEAN

JSON:

{
   "application_settings":{
      "attribute_propagation_settings": {
        "expression": CEL_EXPRESSION,
        "output_credentials": ARRAY[OUTPUT_CREDENTIALS]
        "enable": BOOLEAN
      }
   }
}

REST API

Sie können die weitergegebenen SAML-Attribute mithilfe des Objekts ApplicationSettings in IapSettings konfigurieren, wie in den folgenden Beispielen gezeigt:

{
 "csmSettings": {
    object (CsmSettings)
  },
  "accessDeniedPageSettings": {
    object (AccessDeniedPageSettings)
  },
 "attributePropagationSettings": {
    object (AttributePropagationSettings)
  },
  "cookieDomain": string,
}

AttributePropagationSettings

{
 "expression": string,
 "output_credentials": array
 "enable": boolean
}

Anmeldedaten für die Ausgabe festlegen

Wenn Sie die SAML-Attributweitergabe verwenden, können Sie Attribute über mehrere Medien senden, einschließlich JSON Web Token (JWT) und Header, indem Sie Anmeldedaten für die Ausgabe festlegen. Um die Anmeldedaten in der API festzulegen, können Sie eine Liste mit durch Kommas getrennten Strings angeben, wie im folgenden Beispiel gezeigt:

"output_credentials": ["HEADER", "JWT", "RCTOKEN"]

SAML-Attribute mithilfe der Common Expression Language filtern

Sie können die Funktionen der Common Expression Language (CEL) verwenden, um SAML-Attribute zu filtern.

Für die Verwendung von CEL-Ausdrücken mit der Weitergabe von SAML-Attributen gelten die folgenden Einschränkungen:

  • Ein Ausdruck muss eine Liste von Attributen zurückgeben.
  • Für einen Ausdruck können maximal 45 Attribute ausgewählt werden.
  • Ein Ausdrucksstring darf nicht länger als 1.000 Zeichen sein.

Nachfolgend sind die CEL-Funktionen aufgeführt, die bei Verwendung der Funktion zur Weitergabe von SAML-Attributen IAP unterstützt werden.

Bei den Funktionen wird zwischen Groß- und Kleinschreibung unterschieden und sie müssen genau wie geschrieben verwendet werden. Die Reihenfolge der Funktionen strict und emitAs spielt beim Verketten von Funktionsaufrufen keine Rolle.

Funktion Beispiel Beschreibung
Feldauswahl a.b Wählen Sie das Feld b aus der Proto-Datei a aus. Das Zeichen b kann ein anderes Proto, eine Liste oder ein einfacher Werttyp wie ein String sein.
Listen filtern list.Filter(iter_var, condition) Gibt eine Teilmenge von list zurück, wenn Elemente mit condition übereinstimmen.
Listenmitgliedschaft a“ in „b Gibt true zurück, wenn der Wert a Mitglied der Liste b ist.
selectByName list.selectByName("name") Wählen Sie in der Liste das Attribut aus, bei dem name = "name".
Anfügen list.append(attribute) Hängt das angegebene Attribut an die angegebene Liste an.
strikt attribute.strict() Gibt das Attribut ohne das Präfix x-goog-iap-attr- aus, wenn HEADERS als Anmeldedaten für die Ausgabe verwendet wird.
emitAs attribute.emitAs("new_name") Gibt das angegebene Attribut mit dem Namen "new_name" an alle ausgewählten Ausgabeanmeldedaten aus.

Beispiel für einen CEL-Ausdruck

Von einer SAML-Assertion ausgehen:

<saml2:AttributeStatement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <saml2:Attribute Name="my_saml_attr_1">
    <saml2:AttributeValue xsi:type="xsd:string">value_1</saml2:AttributeValue>
    <saml2:AttributeValue xsi:type="xsd:string">value_2</saml2:AttributeValue>
  </saml2:Attribute>
 <saml2:Attribute Name="my_saml_attr_2">
    <saml2:AttributeValue xsi:type="xsd:string">value_3</saml2:AttributeValue>
    <saml2:AttributeValue xsi:type="xsd:string">value_4</saml2:AttributeValue>
  </saml2:Attribute>
 <saml2:Attribute Name="my_saml_attr_3">
    <saml2:AttributeValue xsi:type="xsd:string">value_5</saml2:AttributeValue>
    <saml2:AttributeValue xsi:type="xsd:string">value_6</saml2:AttributeValue>
  </saml2:Attribute>
</saml2:AttributeStatement>

Verwenden Sie den folgenden CEL-Ausdruck, um my_saml_attr_1 auszuwählen:

attributes.saml_attributes.filter(attribute, attribute.name in ["my_saml_attr_1"])

Verwenden Sie den folgenden CEL-Ausdruck, um my_saml_attr_1 und my_saml_attr_2 auszuwählen:

attributes.saml_attributes.filter(attribute, attribute.name in ["my_saml_attr_1", "my_saml_attr_2"])

Attributformat

Alle ausgewählten Attribute werden in alle ausgewählten Ausgabeanmeldedaten vollständig dupliziert.

Beispiel: Von einer SAML-Assertion ausgehen

<saml2:AttributeStatement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <saml2:Attribute Name="my_saml_attr_1">
    <saml2:AttributeValue xsi:type="xsd:string">value_1</saml2:AttributeValue>
    <saml2:AttributeValue xsi:type="xsd:string">value_2</saml2:AttributeValue>
  </saml2:Attribute>
</saml2:AttributeStatement>

JWT und RC-Token

Das JWT-Token stellt die Attribute über das Feld additional_claims bereit. Das Feld ist ein Objekt und enthält eine Zuordnung der Attributnamen zu einer Liste der Attributwerte. Die Attributnamen haben keine Auswirkungen auf die bereitgestellten SAML-Assertions.

Für die Beispiel-SAML-Assertion enthält das IAP-JWT die Folgendes:

{
  "additional_claims": {
    "my_saml_attr_1": ["value_1", "value_2"]
  }
}

Header in einer SAML-Assertion

In Headern werden die Werte der Attribute, Schlüssel und Namen mit URL-Escape-Zeichen versehen. gemäß RFC 3986 erstellt und durch Kommas zu setzen. Aus header&name: header$value wird beispielsweise x-goog-iap-attr-header%26name: header%24value.

Zur eindeutigen Identifizierung von IAP-Headern enthält jeder Header den IAP-Präfix x-goog-iap-attr-. Aus Sicherheitsgründen Der Balancer entfernt alle Anfrageheader mit dem Präfix x-goog-iap-attr. Dieses sorgt dafür, dass die von der Anwendung empfangenen Header von IAP generiert werden.

Für die Beispiel-SAML-Assertion sieht der Header so aus:

"x-goog-iap-attr-my_saml_attr_1": "value_1,value_2"

Das folgende Beispiel zeigt, wie IAP spezielle wenn Sie Attribute in Headern wie value&1, value$2, und value,3:

"x-goog-iap-attr-my_saml_attr_1": "value%261,value%242,value%2C3"

Es folgt ein Beispiel für die Escapesequenz eines Headernamens.

Header name:

"iap,test,3": "iap_test3_value1,iap_test3_value2"

Maskierter Headername:

"X-Goog-IAP-Attr-iap%2Ctest%2C3": "iap_test3_value1,iap_test3_value2"

Attribute anpassen

Sie können die Funktionen selectByName, append, strict und emitas verwenden, um die weitergegebenen Attributnamen ändern und angeben, ob der Header verwendet werden soll für einige Attribute ein und wählen Sie Attribute.

Wenn Sie die Weitergabe von SAML-Attributen, aber die E-Mail-Adresse nicht verlangen, Geräte-ID oder Zeitstempel in einem SM_USER-Feld können Sie diese Attribute aus iap_attributes list: attributes.iap_attributes...

IAP bietet die folgenden Attribute: user_email, device_id und timestamp.

Beispiele

Die folgenden Beispiele zeigen, wie Attribute mithilfe der Methode selectByName-, append-, strict- und emitas-Funktionen.

Es wird von der Beispiel-SAML-Assertion ausgegangen.

selectByName

Mit der Funktion selectByName können Sie ein einzelnes Attribut aus einer Liste anhand des Namens auswählen. Verwenden Sie beispielsweise den folgenden Ausdruck, um my_saml_attr_1 auszuwählen:

attributes.saml_attributes.selectByName("my_saml_attr_1")

append

Mit der Funktion append hängen Sie ein Attribut an eine Liste von Attributen an. Sie müssen dieses Attribut aus einer der unterstützten Attributlisten für IAP-Käufe auswählen. Wenn Sie beispielsweise my_saml_attr_2 an eine Liste anhängen möchten, die my_saml_attr_1 enthält, verwenden Sie den folgenden Ausdruck:

attributes.saml_attributes.filter(x, x.name in ["my_saml_attr_1"]).append(attributes.saml_attributes.selectByName("my_saml_attr_2"))

Sie können der Filterliste "my_saml_attr_2" hinzufügen. Sie können auch und hängen Sie sie an eine Liste an, indem Sie die Anfügungen verketten, z. B. Folgendes:

attributes.saml_attributes.filter(x, x.name in ["my_saml_attr_1"]).append(
attributes.saml_attributes.selectByName("my_saml_attr_2")).append(
attributes.saml_attributes.selectByName("my_saml_attr_3"))

Das Anfügen einzelner Attribute ist am nützlichsten in Kombination mit dem strict und emitAs-Funktionen.

strict

Mit der Funktion strict können Sie ein Attribut markieren, damit IAP ist x-goog-iap-attr- nicht vorangestellt. Dies ist nützlich, wenn ein Attributname für die Back-End-Anwendung genau sein. Beispiel:

attributes.saml_attributes.selectByName("my_saml_attr_1").strict()

emitAs

Verwenden Sie die Funktion emitAs, um einen neuen Namen für das Attribut anzugeben. Der Name, den Sie werden an alle Anmeldedaten ausgegeben. Um beispielsweise my_saml_attr_1 bis custom_name verwenden, verwenden Sie den folgenden Ausdruck:

attributes.saml_attributes.selectByName("my_saml_attr_1").emitAs("custom_name")

Sie können die verschiedenen Funktionen verwenden, um Attribute für bestimmte Anwendungsfälle anzupassen. Sie können beispielsweise den folgenden Ausdruck verwenden, um die E-Mail eines Nutzers aus IAP-Attributen zusammen mit anderen SAML-Attributen als "SM_USER" weiterzugeben:

attributes.saml_attributes.filter(x, x.name in ["my_saml_attr_1"]).append(
attributes.iap_attributes.selectByName("user_email").emitAs("SM_USER").strict())

Die Ausgabeheader sehen so aus:

"x-goog-iap-attr-my_saml_attr_1": "value_1,value_2"
"SM_USER": "email@domain.com"

Einschränkungen bei der Weitergabe von SAML-Attributen

Bei der Anmeldung sind eingehende Attribute vom Identitätsanbieter auf 2 KB begrenzt von SAML-Attributdaten. Assertions, die die maximale Größe von 2 KB überschreiten, werden abgelehnt und Anmeldung schlägt fehl.

Bei den meisten Webservern gilt eine Größenbeschränkung von 8 KB für Anfragen. Dadurch wird die Größe der ausgehende benutzerdefinierte Attribute, einschließlich duplizierter Attribute in Headern. Wenn die Größe der Attribute (Name plus Werte) überschreitet 5.000 Byte, wenn dupliziert und codiert ist, lehnt IAP die Anfrage ab und gibt den IAP-Fehlercode 401.

Unicode-Zeichen bei der Weitergabe von SAML-Attributen

Diese Funktion unterstützt keine Unicode- und UTF-8-Zeichen. Attributwerte müssen daher Low-ASCII-Strings verwendet. Wenn eine Assertion nicht den Low-ASCII-Wert aufweist, schlägt die Anmeldung fehl.