Eigenschaften von IAM-Bedingungen
Dynamische Regeln und vertrauenswürdige Profile verwenden bedingte IAM-Anweisungen, die Sie angeben können, um föderierte Benutzer automatisch zu Zugriffsgruppen oder vertrauenswürdigen Profilen hinzuzufügen. Wenn sich Benutzer mit einer föderierten ID anmelden, werden die vom Identitätsprovider (IdP) bereitgestelten Daten dazu verwendet, die Benutzer auf der Basis der von Ihnen festgelegten Bedingungen dynamisch einer Zugriffsgruppe zuzuordnen. Weitere Informationen finden Sie unter Dynamische Regeln für Zugriffsgruppen erstellen und Vertrauenswürdige Profile erstellen.
Sie können auch bedingte IAM-Zugriffsrichtlinien zuweisen, um den temporären Zugriff auf Ressourcen in Ihrem Konto festzulegen oder den Zugriff auf Ressourcen während bestimmter Zeitfenster zu erlauben. Weitere Informationen finden Sie unter
Beschränkung des Zugriffs mit zeitbasierten Bedingungen und im Abschnitt Bedingungen in /v2/policies Zugriffsrichtlinien.
Dynamische Regeln und vertrauenswürdige Profildetails
Jede Vertrauensbeziehung zwischen dynamischen Regeln und vertrauenswürdigen Profilen hat die folgenden Eigenschaften:
- Name
- Geben Sie einen benutzerdefinierten Namen ein, der Ihnen hilft, sich zu merken, welche Art von Benutzern Sie zu einer Zugriffsgruppe oder einem vertrauenswürdigen Profil hinzufügen.
- Identitätsprovider (IdP)
- Die dynamische Regel oder das vertrauenswürdige Profil wird nur ausgewertet, wenn der Benutzer, der sich anmeldet, sich mit dem Unternehmens-IdP mit diesem Aussteller-URI authentifiziert. Ihre IdP-URL wird in der Konsole angezeigt, damit Sie
sie kopieren und einfügen, wenn Sie eine dynamische Regel oder ein vertrauenswürdiges Profil erstellen. Beispiel:
https://w3id.sso.ibm.com/auth/sps/samlidp2/saml20. Sie können den IdP auch anzeigen, indem Sie aufView identity provider (IdP) dataklicken. Für IBMid ist der IdP das SAML-Feld "entityID", manchmal auch als Aussteller-ID bezeichnet, und ist Teil der Föderationskonfiguration, wenn Sie eine Einbindung mit IBMid durchführen. Für App ID ist die entsprechende Syntax die "realm ID". Weitere Informationen finden Sie unter Authentifizierung über einen externen Identitätsprovider aktivieren - Sitzungsdauer
- Die Zugehörigkeit zur dynamischen Zugriffsgruppe oder die Sitzung des vertrauenswürdigen Profils läuft nach der in dieser Eigenschaft angegebenen Anzahl von Stunden ab. Wenn die Eigenschaft beispielsweise auf 24 Stunden gesetzt ist, endet die dynamische oder vertrauenswürdige Profilsitzung des Benutzers einen Tag (24 Stunden) nach der Anmeldung.
Eigenschaften der Regel- und Profilbedingungsanweisungen
Außerdem hat jede Vertrauensbeziehung zwischen dynamischen Regeln und vertrauenswürdigen Profilen eine oder mehrere Bedingungen, die aus den folgenden Eigenschaften bestehen. Benutzer müssen alle Bedingungen erfüllen, damit die gesamte Authentifizierung der dynamischen Regel oder des vertrauenswürdigen Profils als wahr ausgewertet wird:
- Benutzer zulassen, wenn
- Ein Attributname, der Teil Ihrer Identitätsproviderdaten ist. Weitere Informationen darüber, wie Attributnamen von Ihrem Enterprise Identity Provider für die Bedingungsauswertung erstellt werden, finden Sie unter Zuordnung von Enterprise Identity Provider-Attributen.
- Operator
- Vergleicht das im
Allow users whenFeld angegebene Attribut mit derValuesEigenschaft. Mögliche Werte: 'Gleich', 'Ungleich', 'Gleich (ohne Beachtung der Groß-/Kleinschreibung)', 'Ungleich (ohne Beachtung der Groß-/Kleinschreibung)', 'In' und 'Enthält'. Verwenden Sie die Option 'Enthält', wenn die Attributanweisung einen Arraytyp aufweist. Mit der Option "In" können Sie mehrere Werte für den Abgleich eingeben. - Werte
- Ein Attributwert, der vom Vergleichsoperator verwendet wird, um den
Allow users whenAttributnamen zu vergleichen.
Sie können sich eine dynamische Regel oder eine Bedingung für ein vertrauenswürdiges Profil als ein Schlüssel:Wert-Paar vorstellen. Der Schlüssel ist die Eingabe, die Sie im Feld Allow users when hinzufügen, und der Wert ist die
Eingabe im Feld Values.
Verfügbare Operatoren für Regel- und Profilbedingungen
| Operator | Beschreibung | Beispielbedingung |
|---|---|---|
| Ist gleich | Zeichenfolgevergleich mit Beachtung der Groß-/Kleinschreibung. Boolesche Werte oder Zahlenwerte werden vor dem Vergleich in eine Zeichenfolge konvertiert. | primaryGroup ist gleich "Admins" |
| Ungleich | Zurückgewiesener Vergleich von Zeichenketten unter Berücksichtigung der Groß- und Kleinschreibung. Boolesche Werte oder Zahlenwerte werden vor dem Vergleich in eine Zeichenfolge konvertiert. | primaryGroup NotEquals "Admins" |
| Gleich (ohne Beachtung der Groß-/Kleinschreibung) | Zeichenfolgevergleich ohne Beachtung der Groß-/Kleinschreibung. Boolesche Werte oder Zahlenwerte werden vor dem Vergleich in eine Zeichenfolge konvertiert. | isManager EqualsIgnoreCase “tRuE” |
| Ungleich (ohne Beachtung der Groß-/Kleinschreibung) | Zurückgewiesener Zeichenfolgevergleich ohne Beachtung der Groß-/Kleinschreibung. Boolesche Werte oder Zahlenwerte werden vor dem Vergleich in eine Zeichenfolge konvertiert. | is_teamlead NotEqualsIgnoreCase "TrUe" |
| Enthält | Wenn das Attribut ein Array aus Zeichenfolgen, Zahlen oder booleschen Werten ist, ermittelt Contains mithilfe des Komparators Equals, ob der angegebene Wert Teil des Arrays in der Anmeldenachricht ist. Wenn
das Attribut stattdessen eine einzelne Zeichenfolge ist, ermittelt Contains, ob der angegebene Wert im Zeichenfolgeattribut in der Anmeldenachricht enthalten ist. |
group enthält "Admins". |
| In | Kurznotation für mehrere Gleichheitsoperatoren. Vergleicht den Wert des Attributs für Anmeldenachrichten mit der Liste potenzieller Werte in dieser Regel. Boolesche Werte oder Zahlen werden vor dem Vergleich in eine Zeichenfolge konvertiert. | jobRole in ["Manager","Director","Team-Lead"] |
Beispiel
Die folgende Tabelle enthält Werte für jedes Feld für eine dynamische Regel oder eine vertrauenswürdige Profilbedingung. In diesem Beispiel werden Benutzer, die als Manager innerhalb des Verbundnetzes IdP identifiziert werden, einer IBM Cloud Zugriffsgruppe oder einem vertrauenswürdigen Profil zugeordnet, für das ein spezifischer Zugriff nur für Manager festgelegt wurde.
| Feld | Wert |
|---|---|
| Name | Manager |
| Identitätsprovider | https://idp.example.org/SAML2 |
| Sitzungsdauer in Stunden | 12 |
| Benutzer zulassen, wenn (Attributname) | isManager |
| Operator | Equals |
| Wert | true |
Attributnamen für Rechenressourcen
Zum Herstellen einer Vertrauensbeziehung mit einer Rechenressource in einem vertrauenswürdigen Profil können Sie die IBM Cloud-Konsole, die IBM Cloud-CLI oder die IAM-API verwenden. Wenn Sie Alle Serviceressourcen auswählen und Bedingungen hinzufügen, um die Rechenressourceninstanzen zu filtern, die das Profil anwenden können, werden die Bedingungen auf der Basis der folgenden Ressourcenattribute erstellt.
Attributnamen für Kubernetes und Red Hat OpenShift
| Name in der IBM Cloud-Konsole | CLI- und API-Name | Beschreibung |
|---|---|---|
| Ressourcengruppen-ID | resource_group_id |
Die ID der Ressourcengruppe, die diesen Cluster enthält. Sie können die Ressourcengruppe eines Clusters über die zugehörige Übersichtsseite in der IBM Cloud-Konsole identifizieren. |
| Name der Ressourcengruppe | resource_group_name |
Der Name der Ressourcengruppe, die diesen Cluster enthält. |
| Serviceinstanz | service_instance |
Die ID dieses Clusters. Sie können diesen Wert aus der Übersichtsseite des Clusters in der IBM Cloud-Konsole als "Cluster-ID" oder über die IBM Cloud-CLI abrufen. |
| Standort | location |
Die Position des Clusters, die aus dem Cloudressourcennamen des Clusters abgeleitet wird. |
| Namensbereich | namespace |
Der Namensbereich des Servicekontos, das zum Abrufen des Tokens einer Rechenressource und eines IAM-Tokens verwendet wird. |
| Servicekonto | name |
Der Name des Servicekontos, das zum Abrufen des Tokens einer Rechenressource und eines IAM-Tokens verwendet wird. |
| Pod | pod |
Der Name des Kubernetes-Pods, das den Code ausführt, der ein IAM-Token abrufen soll. |
Attributnamen für den virtuellen Server für VPC
| Name in der IBM Cloud-Konsole | CLI- und API-Name | Beschreibung |
|---|---|---|
| Ressourcengruppen-ID | resource_group_id |
Die ID der Ressourcengruppe, die diesen Cluster enthält. Sie können die Ressourcengruppe eines Clusters über die zugehörige Übersichtsseite in der IBM Cloud-Konsole identifizieren. |
| Name der Ressourcengruppe | resource_group_name |
Der Name der Ressourcengruppe, die diesen Cluster enthält. |
| Ressourcen-ID | resource |
Die ID des virtuellen Servers für VPC. |
| Gruppenname der Instanz | instance_group_name |
Der Name der Instanzgruppe, wenn dieser virtuelle Server Teil einer Instanzgruppe ist. |
| Bereich | region |
Die Region, in der dieser virtuelle Server bereitgestellt wird. |
| Teilnetz | subnet_id |
Die Teilnetz-ID des virtuellen Servers für VPC, sofern verfügbar. |
| VPC-ID | vpc_id |
Die VPC-ID des virtuellen Servers für VPC, sofern verfügbar. |
| Zone | zone |
Der Name der Zone, in der dieser virtuelle Server bereitgestellt wird. |
Beispiele für Befehle in der IBM Cloud-CLI
In den folgenden Beispielen wird dargestellt, wie Sie die Attributnamen in der Befehlszeilenschnittstelle verwenden können, um Verknüpfungen und Bedingungen für vertrauenswürdige Profile zu erstellen.
Vertrauenswürdiges Profil mit einem Kubernetes-Cluster verknüpfen
Geben Sie den folgenden Befehl ein, um das vertrauenswürdige Profil Test mit dem Kubernetes-Cluster c0pigdctkkc07fs7pm06 im Konto 444aebb0657c7f0f3aae8e7bdc78709a und Servicekonto my-service-account im Namensbereich my-namespace zu verknüpfen:
ibmcloud iam trusted-profile-link-create Test --name NewLink4IKS --cr-type IKS_SA \
--link-crn
crn:v1:bluemix:public:containers-kubernetes:us-east:a/444aebb0657c7f0f3aae8e7bdc78709a:c0pigdctkkc07fs7pm06:: \
--link-namespace "my-namespace" \
--link-name "my-service-account"
Bedingungen für vertrauenswürdige Profile für Kubernetes erstellen
Geben Sie den folgenden Befehl ein, um das vertrauenswürdige Profil mit der ID Profile-b2f13064-2b8c-4e4b-9181-c1973a408e3c mit allen Servicekonten im Kubernetes-Cluster c0pigdctkkc07fs7pm06 im Konto 444aebb0657c7f0f3aae8e7bdc78709a und dem Namensbereich my-namespace des Servicekontos zu verbinden:
ibmcloud iam trusted-profile-rule-create Profile-b2f13064-2b8c-4e4b-9181-c1973a408e3c \
--name NewRule4IKS --type Profile-CR --cr-type IKS_SA \
--conditions "claim:service_instance,operator:EQUALS,vlaue:c0pigdctkkc07fs7pm06" \
--conditions "claim:namespace,operator:EQUALS,value:my-namespace"
Bedingungen für vertrauenswürdige Profile für VPC erstellen
Geben Sie den folgenden Befehl ein, um das vertrauenswürdige Profil mit der ID Profile-b2f13064-2b8c-4e4b-9181-c1973a408e3c mit allen virtuellen Servern in einer VPC r206-1db73eed-b0fb-b04f-bb57-4d3a3c2dff9d im
Konto 444aebb0657c7f0f3aae8e7bdc78709a zu verbinden:
ibmcloud iam trusted-profile-rule-create Profile-b2f13064-2b8c-4e4b-9181-c1973a408e3c \
--name NewRule4VSI --type Profile-CR --cr-type VSI \
--conditions "claim:vpc_id,operator:EQUALS,value:r206-1db73eed-b0fb-b04f-bb57-4d3a3c2dff9d"
Bedingungen in der v2 Zugangspolitik
Zeitbasierte und ressourcenattributbasierte Bedingungen für IAM-Zugriffsrichtlinien verwenden die /v2/policies-Syntax. Richtlinien, die die /v1/policies-Syntax verwenden, können keine zeitbasierten, auf Ressourcenattributen
basierenden Bedingungen hinzufügen. Weitere Informationen finden Sie unter Versionseinschränkungen der Zugriffsrichtlinie.
Um das neue Schema für Richtlinien anzuzeigen, siehe /v2/policies.
Zeitabhängige Bedingungen
In der folgenden Tabelle sind die Operatoren aufgeführt, die für die Erstellung zeitbasierter Bedingungen für Zugriffsrichtlinien zur Verfügung stehen.
| Operator | Beschreibung | Beispiel |
|---|---|---|
dayOfWeekAnyOf |
Die Wochentage, an denen der Kunde die Police nutzen kann. 1 - Montag 2 - Dienstag 3 - Mittwoch 4- Donnerstag 5 - Freitag 6 - Samstag 7 - Sonntag |
Siehe Beispiel. |
timeGreaterThanOrEquals |
Der Zeitpunkt, ab dem die Bedingung den Zugang gewährt. Die Zeit wird über <time>±<time_zone_offset> berechnet. |
Siehe Beispiel. |
timeLessThanOrEquals |
Der Zeitpunkt, zu dem die Bedingung den Zugriff beendet. Die Zeit wird über <time>±<time_zone_offset> berechnet. |
Siehe Beispiel. |
dateTimeGreaterThanOrEquals |
Das Datum und die Uhrzeit, ab der die Bedingung den Zugang gewährt. Das Datum wird von <datetime>±<time_zone_offset> berechnet. |
Siehe Beispiel. |
dateTimeLessThanOrEquals |
Das Datum und die Uhrzeit, zu der die Bedingung den Zugriff beendet. Das Datum wird von <datetime>±<time_zone_offset> berechnet. |
Siehe Beispiel. |
Wenn Sie eine Bedingung mit einem GreaterThanOrEquals Operator definieren, schließen Sie immer eine Bedingung mit einem LessThanOrEquals Operator ein. Auf diese Weise gibt es eine klar definierte Dauer, unabhängig
davon, ob es sich um eine zeitlich begrenzte, ganztägig wiederkehrende oder um eine wiederkehrende mit benutzerdefinierten Stunden handelt. Weitere Informationen finden Sie unter Konditionsmuster.
Für Datums- und Zeitoperatoren unterstützen die Richtlinien das ISO 8601-Format hh:mm:ss±hh:mm. Der Zeitzonenversatz bezieht sich auf die koordinierte Weltzeit.
Verwenden Sie die folgenden Variablen, um die key darzustellen, die das Umgebungsattribut des Clients angibt, das von der Richtlinie ausgewertet wird. Jedes key unterstützt eine bestimmte Anzahl von Operatoren.
| Variablenname | Beschreibung | Unterstützte Operatoren |
|---|---|---|
environment.attributes.current_time |
Die aktuelle Uhrzeit des Kunden. | timeGreaterThanOrEquals, timeLessThanOrEquals |
environment.attributes.current_date_time |
Das aktuelle Datum und die Uhrzeit des Kunden. | dateTimeGreaterThanOrEquals, dateTimeLessThanOrEquals |
environment.attributes.day_of_week |
Der aktuelle Wochentag des Kunden. | dayOfWeekAnyOf, dayOfWeekEquals |
Beispiel: dayOfWeekAnyOf, timeGreaterThanOrEquals, und timeLessThanOrEquals
Die Wochentage, die in diesem Beispiel angegeben werden, entsprechen Montag, Dienstag, Mittwoch und Donnerstag. Der Wert timeGreaterThanOrEquals gibt an, dass die Bedingung um 9 Uhr morgens in der Zeitzone UTC-5 beginnt, Zugang
zu gewähren. Der Wert timeLessThanOrEquals zeigt an, dass die Bedingung den Zugriff um 17 Uhr in der Zeitzone UTC-5 beendet.environment.attributes.current_time und environment.attributes.day_of_week zeigen an, dass es sich um eine wiederkehrende zeitbasierte Bedingung handelt. Fügen Sie immer time Bedingungen mit einer dayOfWeek Bedingung
ein.
"conditions": [
{
"key": "{{environment.attributes.day_of_week}}",
"operator": "dayOfWeekAnyOf",
"value": [
1,
2,
3,
4
]
},
{
"key": "{{environment.attributes.current_time}}",
"operator": "timeGreaterThanOrEquals",
"value": "09:00:00-05:00"
},
{
"key": "{{environment.attributes.current_time}}",
"operator": "timeLessThanOrEquals",
"value": "17:00:00-05:00"
}
]
Beispiel: dayOfWeekEquals
Der Wochentag wird in diesem Beispiel durch 3 in der Zeichenkette value repräsentiert, was dem Mittwoch entspricht. In der gleichen Zeichenfolge steht +6:00 für die Zeitzone UTC+6:00. Es
gibt nur eine Bedingung, daher ist sie unter "rule" verschachtelt.
"rule": {
"key": "{{environment.attributes.day_of_week}}",
"operator": "dayOfWeekEquals",
"value": "3+06:00"
},
Beispiel: dateTimeGreaterThanOrEquals und dateTimeLessThanOrEquals
In diesem Beispiel gibt der Wert dateTimeGreaterThanOrEquals an, dass die Bedingung am 26. Dezember 2022 um 9 Uhr morgens in der Zeitzone UTC-5 beginnt, Zugang zu gewähren. Der Wert dateTimeLessThanOrEquals zeigt
an, dass die Bedingung den Zugriff am 27. Dezember 2022 um 17 Uhr in der Zeitzone UTC-5 beendet. environment.attributes.current_date_time zeigt an, dass es sich um eine zeitlich begrenzte Bedingung handelt.
"conditions": [
{
"key": "{{environment.attributes.current_date_time}}",
"operator": "dateTimeGreaterThanOrEquals",
"value": "2022-12-26T09:00:00-05:00"
},
{
"key": "{{environment.attributes.current_date_time}}",
"operator": "dateTimeLessThanOrEquals",
"value": "2022-12-27T17:00:00-05:00"
}
]
Auf Ressourcenattributen basierende Bedingungen
In der folgenden Tabelle sind die Operatoren aufgeführt, die zum Erstellen von auf Ressourcenattributen basierenden Bedingungen für Zugriffsrichtlinien verfügbar sind.
| Operator | Beschreibung | Beispiel |
|---|---|---|
stringEquals |
Zeichenfolgevergleich mit Beachtung der Groß-/Kleinschreibung. Boolesche Werte oder Zahlenwerte werden vor dem Vergleich in eine Zeichenfolge konvertiert. | Siehe Beispiel. |
stringExists |
Boolean, wobei true angibt, dass die Zeichenfolge vorhanden sein muss und leer sein kann. false gibt an, dass die Zeichenfolge nicht vorhanden sein darf. |
Siehe Beispiel. |
stringMatch |
Die Groß-/Kleinschreibung wird bei der Zeichenkettenübereinstimmung zwischen dem Muster und der Zielzeichenkette berücksichtigt, indem entweder ein Sternchen (*), ein Fragezeichen (?), beides oder keines (wie
beim literalen Wert) verwendet wird. Ein Stern (*) stellt eine beliebige Folge von null, einem oder mehreren Zeichen in der Zeichenfolge dar, ein Fragezeichen (?) stellt ein einzelnes Zeichen dar. Sie können
auch ein Sternchen * und ein Fragezeichen ? als literalen Wert ausdrücken, indem Sie sie in zwei Gruppen von geschweiften Klammern {{}} einschließen. |
Siehe Beispiel. |
stringEqualsAnyOf |
Groß- und Kleinschreibung beachtende exakte Übereinstimmung mit einer beliebigen Zeichenkette in einem Array von Zeichenketten. Grenze von 10 Werten. | Siehe Beispiel. |
stringMatchAnyOf |
Groß- und Kleinschreibung beachtende Zeichenkette, die mit einer beliebigen Zeichenkette in einem Array von Zeichenketten übereinstimmt. Die Zeichenkettenwerte können entweder ein Sternchen (*), ein Fragezeichen (?),
beides oder kein Sternchen (wie beim literalen Wert) enthalten. Ein Stern (*) stellt eine beliebige Folge von null, einem oder mehreren Zeichen in der Zeichenfolge dar, ein Fragezeichen (?) stellt ein einzelnes
Zeichen dar. Sie können auch ein Sternchen * und ein Fragezeichen ? als literalen Wert ausdrücken, indem Sie sie in zwei Gruppen von geschweiften Klammern {{}} einschließen. Grenze von 10 Werten. |
Die Adresse key steht für das Ressourcenattribut, das vom gewählten Dienst unterstützt wird. Eine key hat die Form von resource.attributes.<attribute-name>. Im Fall von Cloud Object Storage beispielsweise
kann das unterstützte Attribut prefix als Schlüssel mit der Schreibweise resource.attributes.prefix dargestellt werden. Die folgende Tabelle enthält Beispielvariablen und ist nicht allumfassend.
| Variablenname | Beschreibung | Unterstützte Operatoren |
|---|---|---|
resource.attributes.prefix |
Legt das Präfix fest, das diese Bedingung für die Auflistung von Objekten oder Ordnern zulassen soll. | stringMatchAnyOf |
resource.attributes.path |
Umfasst alle Lese-, Schreib- und Verwaltungszugriffe auf Objekte. | stringMatchAnyOf |
resource.attributes.delimiter |
Schränkt die Art der Ordnerstruktur ein, die der Benutzer erstellen kann, und hilft dem Benutzer bei der Navigation im Bucket wie bei einer Dateihierarchie. | stringEquals |
Weitere Informationen finden Sie unter Konditionsmuster.
Beispiel: stringMatchAnyOf und stringEqualsAnyOf
In diesem Beispiel bedeutet der Wert stringMatchAnyOf für die Variable resource.attributes.path, dass der Zugriff gewährt wird, wenn der Objektpfad entweder mit home/David/*, special/*,
restricted/* oder temporary/test*spatial.?.log (z. B. temporary/test_spatial.1.log ) beginnt. Der Wert or zeigt an, dass es eine alternative Bedingung gibt, die den Zugang gewähren kann.
Der Wert stringEqualsAnyOf für die Variable resource.attributes.delimiter zeigt an, dass der Zugang gewährt wird, wenn kein Begrenzungsindikator vorhanden ist oder wenn / vorhanden ist. Außerdem zeigt
stringEqualsAnyOf für die Variable resource.attributes.prefix an, dass auch home/ oder home/David/ oder kein Präfix vorhanden sein muss, um den Zugriff zu gewähren. Der Wert and gibt an, dass sowohl resource.attributes.delimiter als auch resource.attributes.prefix erfüllt sein müssen, um den Zugang zu gewähren.
"pattern": "attribute-based-condition:resource:literal-and-wildcard",
"rule": {
"operator": "or",
"conditions": [
{
"key": "{{resource.attributes.path}}",
"operator": "stringMatchAnyOf",
"value": [
"home/David/*",
"special/*",
"restricted/*",
"temporary/test*spatial.?.log"
]
},
{
"operator": "and",
"conditions": [
{
"key": "{{resource.attributes.delimiter}}",
"operator": "stringEqualsAnyOf",
"value": [
"",
"/"
]
},
{
"key": "{{resource.attributes.prefix}}",
"operator": "stringEqualsAnyOf",
"value": [
"",
"home/",
"home/David/"
]
}
]
}
]
}
Beispiel stringExists, stringEquals, stringMatch
In diesem Beispiel zeigt stringEquals für iam_id, accountID, serviceName und resourceType an, dass eine exakte Zeichenfolgenübereinstimmung durchgeführt wird. Das Sternchen
im Wert stringMatch für die Ressourcenvariable bedeutet, dass der Zugriff auf alle Ressourcen gewährt wird, die mit dev-bucket- beginnen. Der Wert true stringExists für die Pfadvariable und der Wert
false stringExists für die Präfix- und Delimiter-Variable zeigen an, dass nur der Pfad existieren muss, um Zugang zu gewähren.
{
"type": "access",
"subject": {
"attributes": [
{
"key": "iam_id",
"operator": "stringEquals",
"value": "IBMid-1234"
}
]
},
"control": {
"grant": {
"roles": [
{
"role_id": "crn:v1:bluemix:public:cloud-object-storage::::role:ListFolderContent"
},
{
"role_id": "crn:v1:bluemix:public:cloud-object-storage::::role:ListFolder"
},
{
"role_id": "crn:v1:bluemix:public:cloud-object-storage::::role:AllFolderOperations"
}
]
}
},
"resource": {
"attributes": [
{
"name": "accountId",
"operator": "stringEquals",
"value": "account-123"
},
{
"key": "serviceName",
"operator": "stringEquals",
"value": "cloud-object-storage"
},
{
"key": "serviceInstance",
"operator": "stringEquals",
"value": "cd329d97-c33d-4428-b39e-6170dc1c2a1e"
},
{
"key": "resource",
"operator": "stringMatch",
"value": "dev-bucket-*"
},
{
"key": "resourceType",
"operator": "stringEquals",
"value": "bucket"
}
]
},
"rule": {
"operator": "and",
"conditions": [
{
"key": "{{resource.attributes.path}}",
"operator": "stringExists",
"value": true
},
{
"key": "{{resource.attributes.prefix}}",
"operator": "stringExists",
"value": false
},
{
"key": "{{resource.attributes.delimiter}}",
"operator": "stringExists",
"value": false
}
]
}
}