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). Wenn Sie SAML-Attribute weitergeben, können Sie angeben, welche Attribute weitergegeben werden sollen und wie die Attribute gesendet 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 eine oder mehrere Attribute in den Informationen enthalten sind, die für Ihre geschützten Anwendungen bereitgestellt werden. 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 SAML-Attributweitergabe, indem Sie in Google Workspace ein SSO-Profil erstellen. Aktualisieren Sie dann die IAP-Einstellungen mit der Google Cloud CLI oder der REST API.
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 Attributübertragung aktivieren aus und klicken Sie auf Speichern.
Geben Sie auf dem Tab SAML-Attribute die Attribute ein, die Sie weitergeben möchten, und verwenden Sie dabei das folgende Format:
attribute1, attribute2, attribute3
Sie können die Attribute auch mit einem benutzerdefinierten Ausdruck eingeben. Die Attribute für Ihren benutzerdefinierten Ausdruck werden auf dem Tab SAML-Attribute angezeigt. 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 Überzugebende Anmeldedatentypen mindestens ein Attributformat aus, das vom IdP an Anwendungen übergeben werden soll.
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 Ihre 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 Headern. Dazu müssen Sie Ausgabeanmeldedaten festlegen. Um die Anmeldedaten in der API festzulegen, können Sie eine Liste von durch Kommas getrennten Strings angeben, wie im folgenden Beispiel gezeigt:
"output_credentials": ["HEADER", "JWT", "RCTOKEN"]
SAML-Attribute mit Common Expression Language filtern
Sie können Common Expression Language (CEL)-Funktionen 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.
- Mit einem Ausdruck können maximal 45 Attribute ausgewählt werden.
- Ein Ausdrucksstring darf 1.000 Zeichen nicht überschreiten.
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 so verwendet werden, wie sie geschrieben sind. Die Reihenfolge der Funktionen strict
und emitAs
spielt keine Rolle, wenn Funktionsaufrufe verschachtelt werden.
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. |
CEL-Beispielausdruck
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"])
Wenn Sie my_saml_attr_1
und my_saml_attr_2
auswählen möchten, verwenden Sie den folgenden CEL-Ausdruck:
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: SAML-Assertion annehmen
<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 gemäß RFC 3986 URL-entkommentiert und durch Kommas getrennt. 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 entfernt der Load Balancer alle Anfrageheader mit dem Präfix x-goog-iap-attr
. Dieses
sorgt dafür, dass von der Anwendung empfangene 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"
Im folgenden Beispiel wird gezeigt, wie IAP spezielle Zeichen bei der Weiterleitung von Attributen in Headern wie value&1
, value$2
und value,3
entwirft:
"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 einer Liste von Attributen ein Attribut 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 "my_saml_attr_2"
der Filterliste 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 Anhängen einzelner Attribute ist am nützlichsten, wenn es mit den Funktionen strict
und emitAs
kombiniert wird.
strict
Mit der Funktion strict
können Sie ein Attribut kennzeichnen, damit IAP
ist x-goog-iap-attr-
nicht vorangestellt. Das ist hilfreich, wenn ein Attributname für die Backend-Anwendung genau festgelegt werden muss. 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 Verwendung der SAML-Attributweitergabe
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 Fehlercode 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 im niedrigen ASCII-Format vorliegt, schlägt die Anmeldung fehl.