Assegnazione dell'accesso utilizzando politiche con caratteri jolly
Quando si assegna l'accesso a determinati servizi abilitati IAM, è possibile utilizzare gli operatori avanzati in un criterioUn metodo per concedere l'accesso alle risorse dell'account a utenti, ID servizio e gruppi di accesso. Una politica di accesso include un oggetto, una destinazione e un ruolo. per concedere l'accesso alle risorse che soddisfano specifiche convenzioni di denominazione. Utilizzando le politiche con caratteri jolly, puoi ridurre il numero di politiche necessarie per la gestione dell'accesso ad alcune risorse.
Per assegnare l'accesso, devi disporre del ruolo di amministratore sulla risorsa. Per ulteriori informazioni, vedi Accesso IAM.
Documento di politiche JSON
La maggior parte delle politiche di accesso viene archiviata in IBM Cloud® sotto forma di documenti JSON. Quando si utilizza l'operatore stringEquals in un criterio, viene eseguita una corrispondenza esatta tra la query e la stringa
di destinazione. Quando si utilizza l'operatore stringMatch, viene eseguita una corrispondenza di stringa sensibile alle maiuscole e minuscole tra il modello e la stringa di destinazione utilizzando un asterisco (*),
un punto interrogativo (?), entrambi o i valori letterali. Un asterisco (*) rappresenta qualsiasi sequenza di zero o più caratteri nella stringa, mentre un punto interrogativo (?) rappresenta qualsiasi
singolo carattere. Vedi i seguenti esempi:
*dev*corrisponde a qualsiasi stringa che contienedevdev*corrisponde a qualsiasi stringa che inizia condev*devcorrisponde a qualsiasi stringa che termina condev
Per informazioni dettagliate sugli operatori supportati per gli attributi specifici di quel servizio, consultare la documentazione del servizio specifico a cui si sta assegnando l'accesso.
Utilizzo di un asterisco (*) come carattere jolly
Il seguente esempio mostra come puoi creare una politica che fornisca a un utente l'accesso per gestire tutti gli argomenti di Event Streams che iniziano con dev in un determinato account.
{
"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*"
}
]
}
]
}
Utilizzo di un punto interrogativo (?) come carattere jolly
L'esempio seguente mostra come creare un criterio che dia a un utente l'accesso alla modifica di qualsiasi argomento di Event Streams che finisca con un particolare schema.
Sulla riga "value": "*??81", * indica zero o più caratteri e corrisponde a qualsiasi stringa che termina con ??81. ? rappresenta un singolo carattere. Poiché ci sono due
??, lo schema risultante corrisponde a una stringa di quattro o più caratteri che terminano in 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"
}
]
}
]
}
Utilizzo di un asterisco (*) e di un punto interrogativo (?) come carattere letterale
È possibile esprimere un asterisco (*) e un punto interrogativo (?) come caratteri letterali, assicurandosi che non vengano interpretati come caratteri jolly, racchiudendo ciascuno di essi all'interno di due serie
di parentesi graffe {{}}.
L'esempio seguente mostra come creare un criterio che dia a un utente l'accesso alla modifica di un argomento Event Streams contenente i caratteri letterali * e ?. L'argomento deve terminare con lo schema .?.log,
che implica un qualsiasi carattere singolo tra i periodi . seguito dalla stringa 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"
}
]
}
]
}
Sulla riga "value": "dev-topic-{{*}}-{{?}}.?.log", il carattere {{*}} indica il carattere * e il carattere {{?}} indica il carattere ?. Pertanto, un argomento
come dev-topic-*-?.1.log corrisponde a questo schema.
I due esempi seguenti rappresentano la stessa valutazione in cui viene eseguito un confronto di stringhe case-sensitive di dev*.
{
"name": "resource",
"operator": "stringMatch",
"value": "dev{{*}}"
}
{
"name": "resource",
"operator": "stringEquals",
"value": "dev*"
}
Confronti tra stringhe
{{_include-segments/string-compare-intro-reuse.md}}
{{_include-segments/string-compare-table-reuse.md}}