Affectation d'accès à l'aide de règles génériques
Lorsque vous attribuez l'accès à certains services IAM, vous pouvez utiliser des opérateurs avancés dans une politiqueMéthode permettant d'octroyer l'accès aux ressources d'un compte à des utilisateurs, des ID de service et des groupes d'accès. Une règle d'accès comprend un sujet, une cible et un rôle. pour accorder l'accès à des ressources qui répondent à des conventions de dénomination spécifiques. En utilisant des règles génériques, vous pouvez réduire le nombre de règles requises pour la gestion de l'accès à certaines ressources.
Pour affecter un accès, vous devez disposer du rôle d'administrateur sur la ressource. Pour plus d'informations, voir Accès IAM.
Document de règles JSON
La plupart des règles d'accès sont stockées dans IBM Cloud® sous la forme de documents JSON. Lorsque vous utilisez l'opérateur stringEquals dans une règle, une recherche de correspondance exacte est effectuée entre la chaîne de
la requête et la chaîne cible. Lorsque vous utilisez l'opérateur stringMatch, une correspondance de chaîne sensible à la casse est effectuée entre le motif et la chaîne cible en utilisant soit un astérisque (*), soit
un point d'interrogation (?), soit les deux, soit des valeurs littérales. Un astérisque (*) représente une suite de zéro caractère ou plus dans la chaîne, tandis qu'un point d'interrogation (?) représente
un seul caractère. Voir cet exemple :
*dev*correspond à n'importe quelle chaîne contenantdevdev*correspond à n'importe quelle chaîne commençant pardev*devcorrespond à n'importe quelle chaîne se terminant pardev
Consultez la documentation relative au service spécifique pour lequel vous affectez l'accès afin d'obtenir des détails sur les opérateurs pris en charge pour les attributs spécifiques de ce service.
Utilisation d'un astérisque (*) en tant que caractère générique
L'exemple suivant montre comment créer une règle permettant à un utilisateur de gérer toutes les rubriques Event Streams commençant par dev, dans un compte particulier.
{
"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*"
}
]
}
]
}
Utilisation d'un point d'interrogation (?) en tant que caractère générique
L'exemple suivant montre comment créer une règle qui permet à un utilisateur d'éditer n'importe quelle rubrique Event Streams se terminant selon un modèle particulier.
Sur la ligne "value": "*??81", * indique zéro ou plusieurs caractères et correspond à n'importe quelle chaîne se terminant par ??81. ? représente un caractère unique.
Étant donné qu'il existe deux ??, le modèle qui en résulte correspond à une chaîne de quatre caractères ou plus se terminant par 81.
{
"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"
}
]
}
]
}
Utilisation d'un astérisque (*) et d'un point d'interrogation (?) comme caractère littéral
Vous pouvez exprimer un astérisque (*) et un point d'interrogation (?) comme un caractère littéral, en veillant à ce qu'ils ne soient pas interprétés comme un caractère générique, en les plaçant entre deux séries
de parenthèses courbes {{}}.
L'exemple suivant montre comment vous pouvez créer une stratégie qui donne à un utilisateur l'accès à la modification d'une rubrique Event Streams qui contient les caractères littéraux * et ?. Le sujet doit se terminer
par le motif .?.log, c'est-à-dire tout caractère unique compris entre les points . suivis de la chaîne 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"
}
]
}
]
}
Sur la ligne "value": "dev-topic-{{*}}-{{?}}.?.log", le {{*}} indique le caractère * et le {{?}} indique le caractère ?. Par conséquent, un sujet tel que
dev-topic-*-?.1.log correspond à ce modèle.
Les deux exemples suivants représentent la même évaluation où une comparaison de chaînes de caractères sensibles à la casse de dev* est effectuée.
{
"name": "resource",
"operator": "stringMatch",
"value": "dev{{*}}"
}
{
"name": "resource",
"operator": "stringEquals",
"value": "dev*"
}
Comparaisons des chaînes
{{_include-segments/string-compare-intro-reuse.md}}
{{_include-segments/string-compare-table-reuse.md}}