Tous les produits
Search
Centre de documentation

ApsaraMQ for RabbitMQ:Creating custom policies for RAM identities

Dernière mise à jour :Aug 11, 2026

Resource Access Management (RAM) fournit des politiques système couvrant les scénarios courants de contrôle d'accès. Lorsque ces politiques ne permettent pas une granularité suffisante, créez des politiques personnalisées afin d'appliquer le principe du moindre privilège aux ressources ApsaraMQ for RabbitMQ.

Profils d'autorisations courants

Avant de rédiger une politique depuis zéro, identifiez le modèle d'accès correspondant à votre cas d'utilisation.

Modèle d'accès Étendue Exemple de politique
Publication uniquement Un seul vhost Exemple 2 : Publier des messages
Consommation uniquement Un seul vhost Exemple 3 : Consommer des messages
Publication et consommation Un seul vhost Exemple 4 : Publier et consommer des messages
Messagerie complète Un seul vhost (incluant la gestion des identifiants) Exemple 1 : Accès complet à la messagerie sur un vhost
Gestion des identifiants Une seule instance Exemple 5 : Gérer les identifiants de compte statique
Création d'instance À l'échelle du compte Exemple 6 : Créer des instances
Création d'instance restreinte À l'échelle du compte, avec conditions Exemple 7 : Créer des instances Platinum Edition sans accès Internet
Administration complète de l'instance Une seule instance Exemple 8 : Accès complet à une seule instance

Principes de base des politiques personnalisées

Contrairement aux politiques système gérées par Alibaba Cloud, la création et la maintenance des politiques personnalisées relèvent de votre responsabilité.

  • Attachement : Attachez une politique personnalisée à un utilisateur RAM, un groupe d'utilisateurs ou un rôle RAM pour que les autorisations prennent effet.

  • Suppression : Détachez une politique de toutes les entités avant de la supprimer. Les politiques non attachées peuvent être supprimées directement.

  • Gestion des versions : RAM propose un contrôle de version pour les politiques personnalisées. Gérez les versions via la console RAM ou l'API.

Opérations connexes

Format ARN des ressources

Toutes les ressources ApsaraMQ for RabbitMQ utilisent le format de nom de ressource Alibaba Cloud (ARN) suivant :

acs:amqp:$region:$accountid:/instances/$instanceId/...
Variable Description Exemple
$region Région où se trouve la ressource. Utilisez * pour toutes les régions. cn-hangzhou
$accountid ID du compte Alibaba Cloud. Utilisez * pour n'importe quel compte. 1234567890
$instanceId ID de l'instance ApsaraMQ for RabbitMQ amqp-cn-xxxxx
$vhostName Nom du vhost my-vhost
$exchangeName Nom de l'exchange my-exchange
$queueName Nom de la queue my-queue

Hiérarchie des ressources

instances/
├── $instanceId/
│   ├── vhosts/
│   │   └── $vhostName/
│   │       ├── exchanges/
│   │       │   └── $exchangeName/
│   │       │       └── messages/*
│   │       └── queues/
│   │           └── $queueName/
│   │               └── messages/*
│   └── staticAccount/*

Pour obtenir la liste des régions prises en charge, consultez la rubrique Endpoints.

Référence des actions

Les actions ApsaraMQ for RabbitMQ se divisent en deux catégories : les actions API client pour les opérations du protocole AMQP, et les actions Console et OpenAPI pour les opérations de gestion via la console et l'API.

Actions API client

API client Action Ressource Description
exchange.declare (passive=false) amqp:CreateExchange acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/* Déclare un exchange. Crée l'exchange s'il n'existe pas. Si l'exchange existe, valide ses propriétés et renvoie une erreur en cas de discordance.
exchange.declare (passive=true) amqp:GetExchange acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/$exchangeName Vérifie si un exchange existe. Renvoie une erreur si l'exchange n'existe pas.
exchange.bind amqp:GetExchange (source) acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/$exchangeName (source) Lie un exchange source à un exchange de destination.
amqp:CreateExchange (destination) acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/* (destination)
exchange.unbind amqp:GetExchange (source) acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/$exchangeName (source) Dissocie un exchange source d'un exchange de destination.
amqp:CreateExchange (destination) acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/* (destination)
queue.declare (passive=false) amqp:CreateQueue acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/* Déclare une queue. Crée la queue si elle n'existe pas. Si la queue existe, valide ses propriétés et renvoie une erreur en cas de discordance.
queue.declare (passive=true) amqp:GetQueue acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName Vérifie si une queue existe. Renvoie une erreur si la queue n'existe pas.
queue.declare (avec dead-letter exchange) amqp:CreateQueue acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/* Déclare une queue liée à un dead-letter exchange.
amqp:GetQueue acs:amqp:$region:$accountid:/vhosts/$vhostName/queues/$queueName
amqp:CreateExchange (dead-letter) acs:amqp:$region:$accountid:/instances/$instanceName/vhosts/$vhostName/exchanges/$exchangeName (dead-letter)
queue.bind amqp:CreateQueue acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/* Lie une queue à un exchange.
amqp:GetExchange acs:amqp:$region:$accountid:/instances/$instanceName/vhosts/$vhostName/exchanges/$exchangeName
queue.unbind amqp:CreateQueue acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/* Dissocie une queue d'un exchange.
amqp:GetExchange acs:amqp:$region:$accountid:/instances/$instanceName/vhosts/$vhostName/exchanges/$exchangeName
BasicRecover amqp:BasicRecover acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/* Redistribue les messages non acquittés à un consommateur.
BasicCancel amqp:BasicCancel acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/* Annule l'abonnement d'un consommateur.
BasicPublish amqp:BasicPublish acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/$exchangeName/messages/* Publie un message dans un exchange.
BasicConsume amqp:BasicConsume acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/* Démarre un consommateur sur une queue.
BasicAck amqp:BasicAck acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/* Acquitter un ou plusieurs messages.
BasicNack amqp:BasicNack acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/* Rejette un ou plusieurs messages.
BasicReject amqp:BasicReject acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/* Rejette un seul message.
BasicGet amqp:BasicGet acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/* Accède directement aux messages dans une queue.

Actions Console et OpenAPI

Opération API Action Ressource Description
ListInstances amqp:ListInstance acs:amqp:$region:$accountid:/instances/* Interroge la liste des instances.
CreateInstance amqp:CreateInstance acs:amqp:$region:$accountid:/instances/* Crée une instance. Prend en charge les clés de condition.
DeleteInstance amqp:DeleteInstance acs:amqp:$region:$accountid:/instances/$instanceId Supprime une instance.
GetInstance amqp:GetInstance acs:amqp:$region:$accountid:/instances/$instanceId Consulte une instance.
ListVhost amqp:ListVhost acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/* Interroge la liste des vhosts.
CreateVhost amqp:CreateVhost acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/* Crée un vhost.
DeleteVhost amqp:DeleteVhost acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName Supprime un vhost. Nécessite également amqp:GetInstance sur l'instance.
ListExchange amqp:ListExchange acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/* Interroge la liste des exchanges. Nécessite également amqp:GetInstance sur l'instance.
CreateExchange amqp:CreateExchange acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/* Crée un exchange.
DeleteExchange amqp:DeleteExchange acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/exchanges/$exchangeName Supprime un exchange.
ListQueue amqp:ListQueue acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/* Interroge la liste des queues. Nécessite également amqp:GetInstance sur l'instance.
CreateQueue amqp:CreateQueue acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/* Crée une queue.
DeleteQueue amqp:DeleteQueue acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName Supprime une queue.
QueuePurge amqp:QueuePurge acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/* Vide une queue.
ListStaticAccounts amqp:ListStaticAccounts acs:amqp:$region:$accountid:/instances/$instanceId/staticAccount/* Affiche le nom d'utilisateur et le mot de passe. Nécessite également amqp:GetInstance sur l'instance.
FetchStaticAccount amqp:FetchStaticAccount acs:amqp:$region:$accountid:/instances/$instanceId/staticAccount/* Crée un nom d'utilisateur et un mot de passe. Nécessite également amqp:GetInstance sur l'instance.
DeleteStaticAccount amqp:DeleteStaticAccount acs:amqp:$region:$accountid:/instances/$instanceId/staticAccount/* Supprime le nom d'utilisateur et le mot de passe.
Query messages by queue amqp:BasicGet acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/* Accède aux messages dans une queue.
Query messages by message ID amqp:BasicGet acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/* Accède aux messages dans une queue.
Resend messages amqp:BasicGet, amqp:BasicPublish acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/* Renvoie des messages.
Send messages amqp:BasicPublish acs:amqp:$region:$accountid:/instances/$instanceId/vhosts/$vhostName/queues/$queueName/messages/* Envoie des messages.

Clés de condition pour CreateInstance

L'action CreateInstance prend en charge les clés de condition suivantes pour restreindre la création d'instance. Pour plus d'informations, consultez la section Condition.

Clé de condition Type Valeurs valides Description
amqp:InstanceType String enterprise (Enterprise Edition), vip (Platinum Edition) Restreint les éditions d'instance qu'une identité RAM peut créer.
amqp:SupportEIP String true, false Restreint la prise en charge de l'accès Internet par l'instance.

Exemples de politiques

Important

Remplacez les variables d'espace réservé dans les exemples suivants par vos valeurs réelles. Pour plus de détails sur chaque variable, consultez la section Format ARN des ressources.

Exemple 1 : Accès complet à la messagerie sur un vhost

Accorde les autorisations nécessaires pour publier, consommer et gérer les exchanges, les queues et les identifiants de compte statique au sein d'un vhost spécifique.

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "amqp:GetInstance",
                "amqp:ListVhost",
                "amqp:GetVhost"
            ],
            "Resource": [
                "acs:amqp:*:*:/instances/$instanceId",
                "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName",
                "acs:amqp:*:*:/instances/$instanceId/vhosts/*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "amqp:ListExchange",
                "amqp:CreateExchange",
                "amqp:DeleteExchange",
                "amqp:ListQueue",
                "amqp:DeleteQueue",
                "amqp:CreateQueue",
                "amqp:BasicRecover",
                "amqp:BasicCancel",
                "amqp:BasicPublish",
                "amqp:BasicConsume",
                "amqp:BasicAck",
                "amqp:BasicNack",
                "amqp:BasicReject",
                "amqp:QueuePurge",
                "amqp:BasicGet",
                "amqp:GetExchange",
                "amqp:GetQueue"
            ],
            "Resource": "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName/*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "amqp:ListStaticAccounts",
                "amqp:FetchStaticAccount",
                "amqp:DeleteStaticAccount"
            ],
            "Resource": "acs:amqp:*:*:/instances/$instanceId/staticAccount/*",
            "Effect": "Allow"
        }
    ]
}

Exemple 2 : Publier des messages

Accorde les autorisations minimales permettant à un client producteur de publier des messages dans les exchanges d'un vhost spécifique : déclarer des exchanges et des queues, publier des messages et acquitter la livraison.

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "amqp:GetInstance"
            ],
            "Resource": [
                "acs:amqp:*:*:/instances/$instanceId",
                "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "amqp:CreateExchange",
                "amqp:CreateQueue",
                "amqp:BasicRecover",
                "amqp:BasicPublish",
                "amqp:BasicAck",
                "amqp:BasicNack",
                "amqp:GetExchange",
                "amqp:GetQueue"
            ],
            "Resource": "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName/*",
            "Effect": "Allow"
        }
    ]
}

Exemple 3 : Consommer des messages

Accorde les autorisations minimales permettant à un client consommateur de consommer des messages depuis les queues d'un vhost spécifique : déclarer des exchanges et des queues, consommer des messages et gérer les acquittements.

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "amqp:GetInstance",
                "amqp:GetVhost"
            ],
            "Resource": [
                "acs:amqp:*:*:/instances/$instanceId",
                "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "amqp:CreateExchange",
                "amqp:CreateQueue",
                "amqp:BasicRecover",
                "amqp:BasicCancel",
                "amqp:BasicConsume",
                "amqp:BasicAck",
                "amqp:BasicNack",
                "amqp:BasicReject",
                "amqp:QueuePurge",
                "amqp:BasicGet",
                "amqp:GetExchange",
                "amqp:GetQueue"
            ],
            "Resource": "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName/*",
            "Effect": "Allow"
        }
    ]
}

Exemple 4 : Publier et consommer des messages

Accorde les autorisations nécessaires pour publier et consommer des messages au sein d'un vhost spécifique. Combine les actions de l'Exemple 2 et de l'Exemple 3.

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "amqp:GetInstance",
                "amqp:GetVhost"
            ],
            "Resource": [
                "acs:amqp:*:*:/instances/$instanceId",
                "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "amqp:ListExchange",
                "amqp:CreateExchange",
                "amqp:DeleteExchange",
                "amqp:ListQueue",
                "amqp:DeleteQueue",
                "amqp:CreateQueue",
                "amqp:BasicRecover",
                "amqp:BasicCancel",
                "amqp:BasicPublish",
                "amqp:BasicConsume",
                "amqp:BasicAck",
                "amqp:BasicNack",
                "amqp:BasicReject",
                "amqp:QueuePurge",
                "amqp:BasicGet",
                "amqp:GetExchange",
                "amqp:GetQueue"
            ],
            "Resource": "acs:amqp:*:*:/instances/$instanceId/vhosts/$vhostName/*",
            "Effect": "Allow"
        }
    ]
}

Exemple 5 : Gérer les identifiants de compte statique

Accorde les autorisations nécessaires pour lister, créer et supprimer les identifiants de compte statique (paires nom d'utilisateur/mot de passe) pour une instance spécifique.

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "amqp:ListStaticAccounts",
                "amqp:FetchStaticAccount",
                "amqp:DeleteStaticAccount"
            ],
            "Resource": "acs:amqp:*:*:/instances/$instanceId/staticAccount/*"
        },
        {
            "Effect": "Allow",
            "Action": "amqp:GetInstance",
            "Resource": "acs:amqp:*:*:/instances/$instanceId"
        }
    ]
}

Exemple 6 : Créer des instances

Accorde les autorisations nécessaires pour créer des instances ApsaraMQ for RabbitMQ de n'importe quelle édition dans n'importe quelle région.

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "amqp:CreateInstance",
            "Resource": "acs:amqp:*:$accountid:/instances/*"
        }
    ]
}

Exemple 7 : Créer des instances Platinum Edition sans accès Internet

Utilise des clés de condition pour restreindre la création d'instance aux instances Platinum Edition (vip) qui ne prennent pas en charge l'accès Internet (SupportEIP: false).

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "amqp:CreateInstance",
            "Resource": "acs:amqp:*:$accountid:/instances/*",
            "Condition": {
                "StringEquals": {
                    "amqp:InstanceType": [
                        "vip"
                    ],
                    "amqp:SupportEIP": [
                        "false"
                    ]
                }
            }
        }
    ]
}

Exemple 8 : Accès complet à une seule instance

Accorde toutes les autorisations ApsaraMQ for RabbitMQ sur une seule instance, y compris la gestion des vhosts, les opérations de messagerie et la gestion des comptes statiques. L'action amqp:ListInstance est étendue à toutes les instances afin que l'instance cible apparaisse dans la liste des instances de la console.

{
    "Version": "1",
    "Statement": [
        {
            "Action": "amqp:ListInstance",
            "Resource": "acs:amqp:*:*:/instances/*",
            "Effect": "Allow"
        },
        {
            "Action": "amqp:*",
            "Resource": [
                "acs:amqp:*:*:/instances/$instanceId",
                "acs:amqp:*:*:/instances/$instanceId/vhosts/*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "amqp:ListStaticAccounts",
                "amqp:FetchStaticAccount",
                "amqp:DeleteStaticAccount"
            ],
            "Resource": "acs:amqp:*:*:/instances/$instanceId/staticAccount/*",
            "Effect": "Allow"
        }
    ]
}

Références