Zugriffsberechtigungen mithilfe von Platzhalterrichtlinien zuweisen

Wenn Sie den Zugriff auf bestimmte IAM-aktivierte Dienste zuweisen, können Sie erweiterte Operatoren in einer RichtlinieEine Methode, mit der Benutzern, Service-IDs und Zugriffsgruppen Zugriffsberechtigungen für Kontoressourcen erteilt werden. Eine Zugriffsrichtlinie enthält ein Subjekt, ein Ziel und eine Rolle. verwenden, um den Zugriff auf Ressourcen zu gewähren, die bestimmten Namenskonventionen entsprechen. Durch die Verwendung von Platzhalterrichtlinien können Sie die Anzahl der Richtlinien reduzieren, die für die Verwaltung des Zugriffs auf bestimmte Ressourcen erforderlich sind.

Sie benötigen die Administratorrolle für die betreffende Ressource, um die Zugriffsberechtigung zuzuweisen. Weitere Informationen finden Sie unter IAM-Zugriff.

JSON-Richtliniendokument

Die meisten Zugriffsrichtlinien sind in IBM Cloud® als JSON-Dokumente gespeichert. Wenn der Operator stringEquals in einer Richtlinie verwendet wird, wird beim Abgleich der Abfrage- und der Zielzeichenfolge nach exakten Zeichenfolgeübereinstimmungen gesucht. Wenn Sie den Operator stringMatch verwenden, wird eine Groß-/Kleinschreibung berücksichtigende Zeichenfolgenübereinstimmung zwischen dem Muster und der Zielzeichenfolge durchgeführt, wobei entweder ein Sternchen (*), ein Fragezeichen (?), beide oder Literalwerte verwendet werden. Ein Stern (*) stellt eine beliebige Folge von null, einem oder mehreren Zeichen in der Zeichenfolge dar, ein Fragezeichen (?) stellt ein einzelnes Zeichen dar. Beispiele:

  • *dev* entspricht allen Zeichenfolgen, die dev enthalten.
  • dev* entspricht allen Zeichenfolgen, die mit dev beginnen.
  • *dev entspricht allen Zeichenfolgen, die mit dev enden.

Die Dokumentation zum jeweiligen Service, für den Sie Zugriffsberechtigungen zuweisen, enthält Details zu den unterstützten Operatoren für die spezifischen Attribute für diesen Service.

Stern (*) als Platzhalterzeichen verwenden

Das folgende Beispiel veranschaulicht die Erstellung einer Richtlinie, die einem Benutzer die Zugriffsberechtigung für die Verwaltung aller Event Streams-Topics, die mit der Zeichenfolge dev beginnen, in einem bestimmten Konto erteilt.

{
    "type": "access",
    "subjects": [
        {
            "attributes": [
                {
                    "name": "iam_id",
                    "value": "IBMid-12345"
                }
            ]
        }
    ],
    "roles": [
        {
            "role_id": "crn:v1:bluemix:public:iam::::serviceRole:Manager"
        }
    ],
    "resources": [
        {
            "attributes": [
                {
                    "name": "accountId",
                    "value": "d727f71e99b14534b3267fab8cc9b09a"
                },
                {
                    "name": "serviceName",
                    "value": "messagehub"
                },
                {
                    "name": "resourceType",
                    "value": "topic"
                },
                {
                    "name": "resource",
                    "operator": "stringMatch",
                    "value": "dev*"
                }
            ]
        }
    ]
}

Fragezeichen (?) als Platzhalterzeichen verwenden

Das folgende Beispiel zeigt, wie Sie eine Richtlinie erstellen können, die einem Benutzer Zugriff zum Bearbeiten eines Event Streams-Topics gibt, das mit einem bestimmten Muster endet.

In der Zeile "value": "*??81" gibt * null oder mehr Zeichen an und entspricht jeder Zeichenfolge, die mit ??81 endet. ? steht für ein einzelnes Zeichen. Da es zwei ?? gibt, entspricht das resultierende Muster einer Zeichenfolge mit vier oder mehr Zeichen, die auf 81 enden.

{
    "type": "access",
    "subjects": [
        {
            "attributes": [
                {
                    "name": "iam_id",
                    "value": "IBMid-12345"
                }
            ]
        }
    ],
    "roles": [
        {
            "role_id": "crn:v1:bluemix:public:iam::::serviceRole:Writer"
        }
    ],
    "resources": [
        {
            "attributes": [
                {
                    "name": "accountId",
                    "value": "d727f71e99b14534b3267fab8cc9b09a"
                },
                {
                    "name": "serviceName",
                    "value": "messagehub"
                },
                {
                    "name": "resourceType",
                    "operator": "stringEquals"
                    "value": "topic",
                },
                {
                    "name": "resource",
                    "operator": "stringMatch",
                    "value": "*??81"
                }
            ]
        }
    ]
}

Verwendung eines Sternchens (*) und eines Fragezeichens (?) als literales Zeichen

Sie können ein Sternchen (*) und ein Fragezeichen (?) als Literalzeichen ausdrücken und sicherstellen, dass sie nicht als Platzhalter interpretiert werden, indem Sie sie in zwei Gruppen von geschweiften Klammern {{}} einschließen.

Das folgende Beispiel zeigt, wie Sie eine Richtlinie erstellen können, die einem Benutzer Zugriff auf die Bearbeitung eines Event Streams-Themas gibt, das die literalen Zeichen * und ? enthält. Das Thema muss mit dem Muster .?.log enden, d. h. ein beliebiges einzelnes Zeichen zwischen den Punkten . gefolgt von der Zeichenfolge log.

{
    "type": "access",
    "subjects": [
        {
            "attributes": [
                {
                    "name": "iam_id",
                    "value": "IBMid-12345"
                }
            ]
        }
    ],
    "roles": [
        {
            "role_id": "crn:v1:bluemix:public:iam::::serviceRole:Writer"
        }
    ],
    "resources": [
        {
            "attributes": [
                {
                    "name": "accountId",
                    "value": "d727f71e99b14534b3267fab8cc9b09a"
                },
                {
                    "name": "serviceName",
                    "value": "messagehub"
                },
                {
                    "name": "resourceType",
                    "operator": "stringEquals"
                    "value": "topic",
                },
                {
                    "name": "resource",
                    "operator": "stringMatch",
                    "value": "dev-topic-{{*}}-{{?}}.?.log"
                }
            ]
        }
    ]
}

In der Zeile "value": "dev-topic-{{*}}-{{?}}.?.log" steht {{*}} für das Zeichen * und {{?}} für das Zeichen ?. Daher entspricht ein Thema wie dev-topic-*-?.1.log diesem Muster.

Die folgenden zwei Beispiele stellen dieselbe Auswertung dar, bei der ein Groß-/Kleinschreibung beachtender Zeichenfolgenvergleich von dev* durchgeführt wird.

{
    "name": "resource",
    "operator": "stringMatch",
    "value": "dev{{*}}"
}
{
    "name": "resource",
    "operator": "stringEquals",
    "value": "dev*"
}

Zeichenfolgevergleiche

{{_include-segments/string-compare-intro-reuse.md}}

{{_include-segments/string-compare-table-reuse.md}}