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 endgültig 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
- Rufen Sie in der Google Cloud Console die Seite "IAP" auf.
Zu IAP - Öffnen Sie die Einstellungen für eine Ressource und scrollen Sie zu Attributpropagierung.
- Wählen Sie Attributweitergabe aktivieren aus und klicken Sie dann auf Speichern.
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'])
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
können Sie ein Attribut an eine Liste von Attributen anhängen. 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 kennzeichnen, 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.