Tous les produits
Search
Centre de documentation

ApsaraMQ for RocketMQ:Custom policies for ApsaraMQ for RocketMQ

Dernière mise à jour :Aug 09, 2026

Si les stratégies système prédéfinies pour ApsaraMQ for RocketMQ ne satisfont pas vos exigences de contrôle d'accès, créez des stratégies personnalisées Resource Access Management (RAM) afin d'appliquer le principe du moindre privilège au niveau de l'instance, du topic ou du groupe.

Stratégies système et stratégies personnalisées

Les stratégies RAM se divisent en deux catégories :

Type Créateur Modifiable Gestion des versions
Stratégies système Alibaba Cloud Non Non
Stratégies personnalisées Vous Oui Oui, via la gestion des versions RAM

Après avoir créé une stratégie personnalisée, attachez-la à un utilisateur RAM, à un groupe d'utilisateurs RAM ou à un rôle RAM pour accorder les autorisations spécifiées. Vous pouvez supprimer directement une stratégie personnalisée non attachée à un principal. Pour supprimer une stratégie personnalisée attachée à un principal, détachez-la au préalable.

Actions et étendue des ressources

Le tableau suivant répertorie les actions disponibles pour les stratégies personnalisées ApsaraMQ for RocketMQ ainsi que les types de ressources auxquels chaque action s'applique.

Action Description Types de ressources applicables
mq:QueryInstanceBaseInfo Interroger les détails de l'instance Instance
mq:PUB Publier des messages dans un topic Topic
mq:SUB S'abonner aux messages d'un topic ou d'un groupe Topic, Group
mq:* Toutes les actions Tout

Formats ARN des ressources

ApsaraMQ for RocketMQ prend en charge deux modèles d'étendue des ressources selon que votre instance utilise ou non des namespaces. La hiérarchie d'étendue, de la plus large à la plus étroite, est la suivante : Instance > Topic/Group.

  • Avec namespaces -- Les topics et les groupes sont limités à une instance. L'ID de l'instance fait partie de l'ARN du topic et du groupe.

  • Sans namespaces -- Les topics et les groupes ont une étendue globale. L'ARN contient uniquement le nom du topic ou du groupe.

Ressource ARN (avec namespace) ARN (sans namespace)
Instance acs:mq:*:*:{instanceId} acs:mq:*:*:{instanceId}
Topic acs:mq:*:*:{instanceId}%{topic} acs:mq:*:*:{topic}
Group acs:mq:*:*:{instanceId}%{groupId} acs:mq:*:*:{groupId}
Toutes les ressources d'une instance acs:mq:*:*:{instanceId}* N/A
Important

Avant d'accorder des autorisations sur un topic ou un groupe, accordez mq:QueryInstanceBaseInfo sur l'instance correspondante.

Créer et appliquer une stratégie personnalisée

  1. Créez une stratégie personnalisée dans la console RAM. Pour obtenir des instructions détaillées, consultez la rubrique Create a custom policy.

  2. Attachez la stratégie à un utilisateur RAM, à un groupe d'utilisateurs RAM ou à un rôle RAM.

  3. Vérifiez que le principal peut accéder uniquement aux ressources prévues.

Pour utiliser une stratégie personnalisée, vous devez comprendre les exigences de gestion des autorisations de votre activité ainsi que les informations d'autorisation relatives à ApsaraMQ for RocketMQ. Pour la liste complète des actions et des définitions de ressources, consultez la rubrique Autorisation RAM.

Exemples de stratégies

Important

Les exemples JSON ci-dessous contiennent des commentaires // à titre explicatif uniquement. Supprimez tous les commentaires avant d'utiliser le code. JSON ne prend pas en charge les commentaires en ligne.

Accorder des autorisations de publication et d'abonnement sur un topic et un groupe spécifiques

Cette stratégie accorde à un utilisateur RAM l'autorisation de publier des messages dans un topic spécifique et de s'abonner aux messages de ce topic et d'un groupe spécifique sur une seule instance.

Remplacez les espaces réservés suivants par vos valeurs :

Espace réservé Description Exemple
{instanceId} ID de l'instance RocketMQ MQ_INST_abc123
{topic} Nom du topic order-topic
{groupId} ID du groupe de consommateurs GID_order-consumer

Instances avec 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 stratégie comprend trois instructions :

  • Instruction 1 -- Accorde mq:QueryInstanceBaseInfo sur l'instance. Cette étape est requise avant d'accorder des autorisations au niveau du topic ou du groupe.

  • Instruction 2 -- Accorde mq:PUB et mq:SUB sur un topic spécifique, limité à l'instance par le format ARN {instanceId}%{topic}.

  • Instruction 3 -- Accorde mq:SUB sur un groupe spécifique.

Instances sans 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 différence réside dans le fait que les ARN des topics et des groupes n'incluent pas le préfixe d'ID d'instance. Le champ resource utilise acs:mq:*:*:{topic} au lieu de acs:mq:*:*:{instanceId}%{topic}.

Accorder toutes les autorisations sur toutes les ressources d'une instance

Cette stratégie accorde toutes les autorisations sur chaque ressource (topics, groupes) au sein d'une seule instance. Elle s'applique uniquement aux instances utilisant des namespaces.

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "mq:*"
            ],
            "Resource": [
                "acs:mq:*:*:{instanceId}*"
            ]
        }
    ]
}

Le caractère générique * placé après {instanceId} correspond à tous les topics et groupes de cette instance. Remplacez {instanceId} par l'ID de votre instance.

Références