Asignación de acceso mediante políticas comodín
Al asignar acceso a determinados servicios habilitados para IAM, puede utilizar operadores avanzados en una políticaMétodo para asignar acceso a los recursos de una cuenta a los usuarios, ID de servicio y grupos de acceso. Una política de acceso incluye un asunto, un destino y un rol. para conceder acceso a recursos que satisfagan convenciones de nomenclatura específicas. Mediante las políticas comodín, puede reducir el número de políticas necesarias para gestionar el acceso a ciertos recursos.
Para asignar acceso, necesita el rol de administrador sobre el recurso. Para obtener más información, consulte Acceso de IAM.
Documento de política JSON
La mayoría de las políticas de acceso se guardan en IBM Cloud® como documentos JSON. Si utiliza el operador stringEquals en una política, se realiza una comparación de serie exacta entre la consulta y la serie de destino. Cuando
se utiliza el operador stringMatch, se realiza una coincidencia de cadena sensible a mayúsculas/minúsculas entre el patrón y la cadena de destino utilizando un asterisco (*), un signo de interrogación (?),
ambos o valores literales. Un asterisco (*) representa cualquier secuencia de cero o más caracteres en la serie, y un signo de interrogación (?) representa cualquier carácter. Consulte los ejemplos siguientes:
*dev*coincide con cualquier serie que contengadevdev*coincide con cualquier serie que empiece pordev*devcoincide con cualquier serie que termine pordev
Consulte la documentación del servicio específico para el que está asignando acceso para ver detalles sobre los operadores específicos para los atributos específicos de dicho servicio.
Utilización de un asterisco (*) como carácter comodín
En el siguiente ejemplo se muestra cómo crear una política que otorgue a un usuario acceso para gestionar todos los temas de Event Streams que empiecen por dev de una determinada cuenta.
{
"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*"
}
]
}
]
}
Utilización de un signo de interrogación (?) como comodín
El ejemplo siguiente muestra cómo puede crear una política que proporcione a un usuario acceso para editar cualquier tema de Event Streams que finalice en un patrón determinado.
En la línea "value": "*??81", * indica cero o más caracteres y coincide con cualquier serie que termine con ??81. ? representa un solo carácter. Puesto que hay dos ??,
el patrón resultante coincide con una serie de cuatro o más caracteres que terminan en 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"
}
]
}
]
}
Utilización de un asterisco (*) y un signo de interrogación (?) como carácter literal
Puede expresar un asterisco (*) y un signo de interrogación (?) como caracteres literales, asegurándose de que no se interpretan como comodines encerrando cada uno de ellos entre dos conjuntos de llaves {{}}.
En el siguiente ejemplo se muestra cómo crear una directiva que permita a un usuario editar un tema de Event Streams que contenga los caracteres literales * y ?. El tema debe terminar con el patrón .?.log,
lo que implica cualquier carácter entre los puntos . seguido de la cadena 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"
}
]
}
]
}
En la línea "value": "dev-topic-{{*}}-{{?}}.?.log", el {{*}} indica el carácter * y el {{?}} indica el carácter ?. Por lo tanto, un tema como dev-topic-*-?.1.log coincide con este patrón.
Los dos ejemplos siguientes representan la misma evaluación en la que se realiza una comparación de cadenas que distingue mayúsculas de minúsculas de dev*.
{
"name": "resource",
"operator": "stringMatch",
"value": "dev{{*}}"
}
{
"name": "resource",
"operator": "stringEquals",
"value": "dev*"
}
Comparaciones entre cadenas de caracteres
{{_include-segments/string-compare-intro-reuse.md}}
{{_include-segments/string-compare-table-reuse.md}}