Si las directivas predefinidas del sistema para ApsaraMQ for RocketMQ no cumplen con sus requisitos de control de acceso, cree directivas personalizadas de Resource Access Management (RAM) para aplicar el principio de menor privilegio a nivel de instancia, tema o grupo.
Directivas del sistema frente a directivas personalizadas
Las directivas de RAM se dividen en dos categorías:
|
Tipo |
Creador |
Editable |
Control de versiones |
|
Directivas del sistema |
Alibaba Cloud |
No |
No |
|
Directivas personalizadas |
Usted |
Sí |
Sí, mediante la gestión de versiones de RAM |
Después de crear una directiva personalizada, vincúlela a un usuario de RAM, un grupo de usuarios de RAM o un rol de RAM para otorgar los permisos especificados. Puede eliminar directamente una directiva personalizada que no esté vinculada a ninguna entidad de seguridad. Para eliminar una directiva personalizada vinculada a una entidad, primero debe desvincularla.
Acciones y alcance de recursos
La siguiente tabla enumera las acciones disponibles para las directivas personalizadas de ApsaraMQ for RocketMQ y los tipos de recursos a los que aplica cada acción.
|
Acción |
Descripción |
Tipos de recursos aplicables |
|
|
Consultar detalles de la instancia |
Instancia |
|
|
Publicar mensajes en un tema |
Tema |
|
|
Suscribirse a mensajes de un tema o grupo |
Tema, Grupo |
|
|
Todas las acciones |
Todos |
Formatos de ARN de recursos
ApsaraMQ for RocketMQ admite dos modelos de alcance de recursos según si su instancia utiliza namespaces. La jerarquía de alcance, de mayor a menor amplitud, es: Instancia > Tema/Grupo.
Con namespaces: Los temas y grupos tienen un alcance limitado a una instancia. El ID de la instancia forma parte del ARN del tema y del grupo.
Sin namespaces: Los temas y grupos tienen un alcance global. El ARN contiene únicamente el nombre del tema o del grupo.
|
Recurso |
ARN (con namespace) |
ARN (sin namespace) |
|
Instancia |
|
|
|
Tema |
|
|
|
Grupo |
|
|
|
Todos los recursos de una instancia |
|
N/A |
Antes de otorgar permisos sobre un tema o grupo, conceda el permiso mq:QueryInstanceBaseInfo en la instancia correspondiente.
Crear y aplicar una directiva personalizada
Cree una directiva personalizada en la consola de RAM. Para consultar los pasos detallados, vea Crear una directiva personalizada.
Vincule la directiva a un usuario de RAM, un grupo de usuarios de RAM o un rol de RAM.
Compruebe que la entidad de seguridad solo pueda acceder a los recursos previstos.
Para utilizar una directiva personalizada, debe comprender los requisitos de gestión de permisos de su negocio y la información de autorización de ApsaraMQ for RocketMQ. Para obtener la lista completa de acciones y definiciones de recursos, consulte RAM authorization.
Ejemplos de directivas
Los ejemplos JSON siguientes contienen comentarios // únicamente con fines explicativos. Elimine todos los comentarios antes de usar el código. JSON no admite comentarios en línea.
Otorgar permisos de publicación y suscripción en un tema y grupo específicos
Esta directiva otorga a un usuario de RAM permiso para publicar mensajes y suscribirse a mensajes de un tema y grupo específicos en una sola instancia.
Reemplace los siguientes marcadores de posición con sus valores:
|
Marcador de posición |
Descripción |
Ejemplo |
|
|
ID de la instancia de RocketMQ |
MQ_INST_abc123 |
|
|
Nombre del tema |
order-topic |
|
|
ID del grupo de consumidores |
GID_order-consumer |
Instancias con namespaces:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"mq:QueryInstanceBaseInfo"
],
"Resource": [
"acs:mq:*:*:{instanceId}"
]
},
{
"Effect": "Allow",
"Action": [
"mq:PUB",
"mq:SUB"
],
"Resource": [
"acs:mq:*:*:{instanceId}%{topic}"
]
},
{
"Effect": "Allow",
"Action": [
"mq:SUB"
],
"Resource": [
"acs:mq:*:*:{instanceId}%{groupId}"
]
}
]
}
La directiva contiene tres declaraciones:
Declaración 1: Otorga
mq:QueryInstanceBaseInfoen la instancia. Es obligatorio antes de conceder permisos a nivel de tema o de grupo.Declaración 2: Otorga
mq:PUBymq:SUBen un tema específico, con alcance limitado a la instancia mediante el formato de ARN{instanceId}%{topic}.Declaración 3: Otorga
mq:SUBen un grupo específico.
Instancias sin namespaces:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"mq:QueryInstanceBaseInfo"
],
"Resource": [
"acs:mq:*:*:{instanceId}"
]
},
{
"Effect": "Allow",
"Action": [
"mq:PUB",
"mq:SUB"
],
"Resource": [
"acs:mq:*:*:{topic}"
]
},
{
"Effect": "Allow",
"Action": [
"mq:SUB"
],
"Resource": [
"acs:mq:*:*:{groupId}"
]
}
]
}
La diferencia radica en que los ARN de tema y grupo no incluyen el prefijo del ID de instancia. El campo de recurso utiliza acs:mq:*:*:{topic} en lugar de acs:mq:*:*:{instanceId}%{topic}.
Otorgar permisos completos en todos los recursos de una instancia
Esta directiva concede todos los permisos sobre cada recurso (temas, grupos) dentro de una sola instancia. Solo aplica a instancias con namespaces.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"mq:*"
],
"Resource": [
"acs:mq:*:*:{instanceId}*"
]
}
]
}
El comodín * después de {instanceId} coincide con todos los temas y grupos de dicha instancia. Reemplace {instanceId} con el ID de su instancia.