Créez un rôle RAM dans le compte Alibaba Cloud de l'entreprise A, accordez-lui des autorisations et autorisez l'entreprise B à endosser ce rôle. Le compte ou les utilisateurs RAM de l'entreprise B peuvent ainsi accéder aux ressources Alibaba Cloud de l'entreprise A.
Contexte
L'entreprise A utilise Message Queue for Apache RocketMQ et souhaite déléguer certaines tâches opérationnelles à l'entreprise B.
Exigences :
L'entreprise A souhaite rester propriétaire des ressources tout en déléguant à l'entreprise B des tâches via la console, telles que l'interrogation des ressources et la surveillance.
L'entreprise A ne souhaite pas gérer les autorisations lorsque les employés de l'entreprise B rejoignent ou quittent l'organisation. L'entreprise B doit contrôler quels utilisateurs RAM de son propre compte peuvent accéder aux ressources de l'entreprise A et définir leurs autorisations spécifiques.
L'entreprise A doit pouvoir révoquer l'accès de l'entreprise B à tout moment, par exemple à la fin du contrat.
Solution
Pour répondre à ces exigences, l'entreprise A autorise les employés de l'entreprise B à accéder aux ressources Message Queue for Apache RocketMQ. Supposons que l'entreprise A et l'entreprise B disposent chacune d'un compte Alibaba Cloud. Ce guide décrit la procédure de configuration de l'accès intercomptes :
-
Étape 1 : Créer et autoriser un rôle RAM
Dans le compte de l'entreprise A, créez un rôle RAM, attachez les stratégies nécessaires et configurez une stratégie d'approbation permettant aux utilisateurs RAM du compte de l'entreprise B d'endosser le rôle.
-
Étape 2 : Accéder aux ressources entre comptes
Une fois le rôle RAM configuré, les utilisateurs RAM du compte de l'entreprise B peuvent endosser le rôle pour obtenir des autorisations temporaires. Ils peuvent ensuite accéder aux ressources du compte de l'entreprise A de plusieurs façons :
Via un SDK
Via la console
Via des appels d'API
Étape 1 : Créer et autoriser un rôle RAM
-
Connectez-vous à la console RAM avec le compte Alibaba Cloud de l'entreprise A et créez un rôle RAM pour l'entreprise B.
Pour plus d'informations, consultez la rubrique Créer un rôle RAM pour un compte Alibaba Cloud de confiance.
-
Facultatif : Créez une stratégie personnalisée pour le rôle RAM dans le compte de l'entreprise A.
Pour plus d'informations, consultez la rubrique Créer une stratégie personnalisée.
Message Queue for Apache RocketMQ prend en charge les autorisations au niveau de l'instance, du sujet (topic) et du groupe. Pour plus d'informations, consultez la rubrique Stratégies personnalisées pour Message Queue for Apache RocketMQ.
-
Par défaut, un nouveau rôle RAM ne dispose d'aucune autorisation. L'entreprise A doit accorder des autorisations au rôle en attachant une stratégie système ou une stratégie personnalisée.
Pour plus d'informations, consultez la rubrique Accorder des autorisations à un utilisateur RAM.
-
Connectez-vous à la console RAM avec le compte Alibaba Cloud de l'entreprise B et créez un utilisateur RAM.
Pour plus d'informations, consultez la rubrique Créer un utilisateur RAM.
-
Accordez l'autorisation AliyunSTSAssumeRoleAccess à l'utilisateur RAM dans le compte de l'entreprise B.
Pour plus d'informations, consultez la rubrique Accorder des autorisations à un utilisateur RAM.
Accordez l'autorisation
AliyunSTSAssumeRoleAccessà l'utilisateur RAM du compte de l'entreprise B afin qu'il puisse endosser le rôle RAM créé dans le compte de l'entreprise A.
Étape 2 : Accéder aux ressources entre comptes
-
Accès aux ressources à l'aide d'un SDK
Les utilisateurs RAM du compte de l'entreprise B peuvent utiliser un SDK pour accéder aux ressources Message Queue for Apache RocketMQ du compte de l'entreprise A. Choisissez l'une des deux méthodes de configuration suivantes :
-
Configurer un jeton STS : cette méthode nécessite de fournir l'ID AccessKey, le secret AccessKey et un jeton de sécurité temporaire du Security Token Service (STS). Le jeton de sécurité temporaire expire et doit être actualisé. Pour savoir comment obtenir un jeton de sécurité temporaire, consultez la rubrique AssumeRole.
ImportantLa méthode du jeton STS est prise en charge uniquement par le SDK Java pour Message Queue for Apache RocketMQ version 1.7.8.Final et ultérieures.
Pour obtenir un ID AccessKey et un secret AccessKey, consultez la rubrique Créer une paire AccessKey.
Exemple : Configuration du jeton STS
-
Lors de l'initialisation du client pour Message Queue for Apache RocketMQ, spécifiez l'ID AccessKey, le secret AccessKey et le jeton de sécurité temporaire obtenus dans les propriétés suivantes :
Properties properties = new Properties(); // Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET, and ALIBABA_CLOUD_SECURITY_TOKEN environment variables are set. // The AccessKey ID obtained from STS. properties.put(PropertyKeyConst.AccessKey, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")); // The AccessKey secret obtained from STS. properties.put(PropertyKeyConst.SecretKey, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); // The temporary security token. properties.put(PropertyKeyConst.SecurityToken, System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")); // Other properties. properties.put(PropertyKeyConst.NAMESRV_ADDR, "XXX"); ...... Producer client = ONSFactory.createProducer(properties); client.start(); -
Lorsque le jeton de sécurité temporaire expire, appelez la méthode
updateCredentialpour le mettre à jour.Properties properties = new Properties(); // Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET, and ALIBABA_CLOUD_SECURITY_TOKEN environment variables are set. // The AccessKey ID obtained from STS. properties.put(PropertyKeyConst.AccessKey, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")); // The AccessKey secret obtained from STS. properties.put(PropertyKeyConst.SecretKey, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); // The temporary security token. properties.put(PropertyKeyConst.SecurityToken, System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")); client.updateCredential(properties);
-
Configurer un rôle RAM d'instance ECS : si votre application s'exécute sur une instance Elastic Compute Service (ECS), utilisez cette méthode pour éviter d'intégrer des identifiants en dur dans votre SDK. Vous fournissez uniquement le nom du rôle RAM, mais vous devez d'abord attacher le rôle RAM à l'instance ECS. Pour plus d'informations, consultez la rubrique Attacher un rôle RAM d'instance.
ImportantLa méthode du rôle RAM d'instance ECS est prise en charge uniquement par le SDK Java pour Message Queue for Apache RocketMQ version 1.8.7.3.Final et ultérieures.
Exemple : Configuration du rôle RAM d'instance ECS
Properties properties = new Properties(); // The name of the RAM role that you created and attached to the ECS instance. properties.put(PropertyKeyConst.RAM_ROLE_NAME,"XXX");
-
-
Accès aux ressources depuis la console
Les utilisateurs RAM du compte de l'entreprise B peuvent suivre ces étapes pour accéder aux ressources Message Queue for Apache RocketMQ de l'entreprise A depuis la console :
Ouvrez la page Connexion utilisateur RAM dans un navigateur.
-
Sur la page RAM User Logon, saisissez le nom de connexion de l'utilisateur RAM, cliquez sur Next, entrez le mot de passe, puis cliquez sur Log On.
RemarqueLe nom de connexion est au format
<$username>@<$AccountAlias>ou<$username>@<$AccountAlias>.onaliyun.com.<$AccountAlias>correspond à l'alias du compte Alibaba Cloud. Si aucun alias n'est défini, l'ID du compte Alibaba Cloud est utilisé par défaut. Après vous être connecté à la console Alibaba Cloud, placez le curseur sur l'image de profil dans le coin supérieur droit et cliquez sur Switch Identity.
Sur la page Switch Role, saisissez l'Enterprise Alias, le Default Domain ou l'Account UID du compte de l'entreprise A. Saisissez ensuite le Role Name et cliquez sur Submit.
Vous pouvez désormais gérer les ressources Message Queue for Apache RocketMQ du compte de l'entreprise A.
-
Accès aux ressources via des appels d'API
Les utilisateurs RAM du compte de l'entreprise B peuvent accéder aux ressources du compte de l'entreprise A en effectuant des appels d'API vers Message Queue for Apache RocketMQ. Pour plus d'informations sur les appels d'API, consultez la rubrique Effectuer des requêtes API.