Todos los productos
Search
Centro de documentos

ApsaraMQ for RocketMQ:Delegación de acceso entre cuentas con roles de RAM

Última actualización: Sep 04, 2026

Cree un rol de RAM en la cuenta de Alibaba Cloud de la Empresa A, otorgue permisos al rol y permita que la Empresa B lo asuma. De este modo, la cuenta o los usuarios de RAM de la Empresa B podrán acceder a los recursos de Alibaba Cloud de la Empresa A.

Contexto

La Empresa A utiliza Message Queue for Apache RocketMQ y desea delegar ciertas tareas operativas en la Empresa B.

Requisitos:

  • La Empresa A desea conservar la propiedad de los recursos, pero delegar en la Empresa B las tareas basadas en la consola, como la consulta de recursos y el monitoreo.

  • La Empresa A no desea gestionar permisos cada vez que los empleados de la Empresa B se incorporan o causan baja. La Empresa B debe controlar cuáles de sus propios usuarios de RAM pueden acceder a los recursos de la Empresa A y definir sus permisos específicos.

  • La Empresa A debe poder revocar el acceso de la Empresa B en cualquier momento, por ejemplo, cuando finalice su contrato.

Solución

Para cumplir estos requisitos, la Empresa A otorga permisos a los empleados de la Empresa B para acceder a los recursos de Message Queue for Apache RocketMQ. Suponga que tanto la Empresa A como la Empresa B cuentan con una cuenta de Alibaba Cloud. Esta guía describe el procedimiento para configurar el acceso entre cuentas:

  1. Step 1: Create and authorize a RAM role

    En la cuenta de la Empresa A, cree un rol de RAM, adjunte las directivas necesarias y configure una directiva de confianza que permita a los usuarios de RAM de la cuenta de la Empresa B asumir el rol.

  2. Step 2: Access resources across accounts

    Una vez configurado el rol de RAM, los usuarios de RAM de la cuenta de la Empresa B pueden asumir el rol para obtener permisos temporales. Posteriormente, pueden acceder a los recursos de la cuenta de la Empresa A mediante los siguientes métodos:

    • Mediante un SDK

    • Mediante la consola

    • Mediante llamadas a la API

Paso 1: Crear y autorizar un rol de RAM

  1. Con la cuenta de Alibaba Cloud de la Empresa A, inicie sesión en la consola de RAM y cree un rol de RAM para la Empresa B.

    Para más información, consulte Create a RAM role for a trusted Alibaba Cloud account.

  2. Opcional: En la cuenta de la Empresa A, cree una directiva personalizada para el rol de RAM.

    Para más información, consulte Create a custom policy.

    Actualmente, Message Queue for Apache RocketMQ admite permisos a nivel de instancia, de tema y de grupo. Para más información, consulte Custom policies for Message Queue for Apache RocketMQ.

  3. De forma predeterminada, un nuevo rol de RAM no tiene permisos. La Empresa A debe otorgar permisos al rol mediante la vinculación de una directiva del sistema o una directiva personalizada.

    Para más información, consulte Grant permissions to a RAM user.

  4. Con la cuenta de Alibaba Cloud de la Empresa B, inicie sesión en la consola de RAM y cree un usuario de RAM.

    Para más información, consulte Create a RAM user.

  5. En la cuenta de la Empresa B, otorgue el permiso AliyunSTSAssumeRoleAccess al usuario de RAM.

    Para más información, consulte Grant permissions to a RAM user.

    Otorgue el permiso AliyunSTSAssumeRoleAccess al usuario de RAM en la cuenta de la Empresa B para que pueda asumir el rol de RAM creado en la cuenta de la Empresa A.

Paso 2: Acceder a recursos entre cuentas

  • Acceso a recursos mediante un SDK

    Los usuarios de RAM de la cuenta de la Empresa B pueden usar un SDK para acceder a los recursos de Message Queue for Apache RocketMQ en la cuenta de la Empresa A. Elija uno de los dos métodos de configuración siguientes:

    • Configurar un token de STS: Este método requiere proporcionar el AccessKey ID del usuario de RAM, el AccessKey secret y un token de seguridad temporal de Security Token Service (STS). El token de seguridad temporal caduca y debe renovarse. Para más información sobre cómo obtener un token de seguridad temporal, consulte AssumeRole.

      Importante
      • El método de token de STS solo es compatible con el SDK de Java para Message Queue for Apache RocketMQ versión 1.7.8.Final y posteriores.

      • Para obtener un AccessKey ID y un AccessKey secret, consulte Create an AccessKey pair.

      Ejemplo: Configuración de token de STS

      • Al inicializar el cliente para Message Queue for Apache RocketMQ, especifique el AccessKey ID, el AccessKey secret y el token de seguridad temporal obtenidos en las siguientes propiedades:

        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();                    
      • Cuando el token de seguridad temporal caduque, llame al método updateCredential para actualizarlo.

        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);                    
    • Configurar un rol de RAM de instancia de ECS: Si su aplicación se ejecuta en una instancia de Elastic Compute Service (ECS), utilice este método para evitar codificar las credenciales directamente en el SDK. Solo necesita proporcionar el nombre del rol de RAM, pero primero debe adjuntar dicho rol a la instancia de ECS. Para más información, consulte Attach an instance RAM role.

      Importante

      El método de rol de RAM de instancia de ECS solo es compatible con el SDK de Java para Message Queue for Apache RocketMQ versión 1.8.7.3.Final y posteriores.

      Ejemplo: Configuración de rol de RAM de instancia de 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");
  • Acceso a recursos desde la consola

    Los usuarios de RAM de la cuenta de la Empresa B pueden seguir estos pasos para acceder a los recursos de Message Queue for Apache RocketMQ de la Empresa A desde la consola:

    1. En un navegador, abra la página de Inicio de sesión de usuario de RAM.

    2. En la página de RAM User Logon, introduzca el nombre de inicio de sesión del usuario de RAM, haga clic en Next, introduzca la contraseña y luego haga clic en Log On.

      Nota

      El nombre de inicio de sesión tiene el formato <$username>@<$AccountAlias> o <$username>@<$AccountAlias>.onaliyun.com. <$AccountAlias> es el alias de la cuenta de Alibaba Cloud. Si no se ha establecido un alias, se utiliza de forma predeterminada el ID de la cuenta de Alibaba Cloud.

    3. Después de iniciar sesión en la consola de Alibaba Cloud, pase el cursor sobre la imagen de perfil en la esquina superior derecha y haga clic en Switch Identity.

    4. En la página Switch Role, introduzca el Enterprise Alias, el Default Domain o el Account UID de la cuenta de la Empresa A. A continuación, introduzca el Role Name y haga clic en Submit.

    5. Ahora puede gestionar los recursos de Message Queue for Apache RocketMQ en la cuenta de la Empresa A.

  • Acceso a recursos mediante llamadas a la API

    Los usuarios de RAM de la cuenta de la Empresa B pueden acceder a los recursos de la cuenta de la Empresa A mediante llamadas a la API de Message Queue for Apache RocketMQ. Para más información sobre cómo realizar llamadas a la API, consulte Make API requests.

Más información