Asignación de acceso para la gestión empresarial

Para asignar a un usuario acceso para gestionar una empresa de IBM Cloud®, debe invitarlo a la cuenta de empresa y asignarle un acceso al servicio de gestión de cuentas de empresa.

El acceso para gestionar la empresa requiere una política de acceso dentro de la cuenta de empresa. Cuando asigna a un usuario una política de servicio de gestión de cuentas de empresa dentro de una cuenta secundaria en una empresa, el usuario no puede gestionar la empresa a la que pertenece la cuenta. Según el rol asignado en el servicio de gestión de cuentas de Empresa en la cuenta de la empresa, el usuario puede realizar acciones específicas:

  • Crear nuevas cuentas en la empresa
  • Crear y dar nombre a grupos de cuentas
  • Mover cuentas de un grupo de cuentas a otro
  • Cancelar cuentas una vez eliminados todos los recursos asociados
  • Importar cuentas existentes a la empresa
  • Actualizar el nombre o el dominio de la empresa
  • Ver informes de uso, que se utilizan para calcular la facturación, para la empresa, un grupo de cuentas específico, cuentas dentro de grupos de cuentas o una cuenta específica, con detalles disponibles a nivel de plan
  • Crear plantillas de IAM gestionadas por la empresa
  • Asignar plantillas de IAM gestionadas por la empresa a cuentas secundarias
  • Asignar plantillas IAM a cuentas secundarias
  • Establecer notificaciones de gastos en cuentas secundarias para avisar a los miembros de la empresa
  • Supervise la seguridad y el cumplimiento normativo con IBM Cloud Security and Compliance Center Workload Protection
  • Compartir catálogos privados

Una política que otorgue a un usuario acceso al servicio de empresa se puede asignar para toda la empresa o sólo para una cuenta o un grupo de cuentas específico.

Por lo general, la propia cuenta de empresa no contiene muchos recursos. En su lugar, los recursos se crean en las cuentas secundarias de la empresa. Dentro de cada una de estas cuentas, se puede invitar a los usuarios y se les puede dar acceso para gestionar y trabajar con los recursos. El acceso y la pertenencia que un usuario tiene en la cuenta de empresa no se aplica a las cuentas y grupos de cuentas inferiores en la jerarquía de la empresa. La gestión de usuarios y la gestión de acceso permanece aislada en cada una de las cuentas, tal como se puede ver en los diagramas siguientes.

El primer diagrama muestra cómo se puede asignar a un usuario de la cuenta de empresa una política para gestionar toda la empresa. El segundo diagrama muestra una política que se circunscribe a un grupo de cuentas que proporciona acceso para gestionar solo ese grupo de cuentas y las cuentas inferiores dentro del mismo.

caption-side=bottom"

El destino y el rol de la política son importantes para determinar el alcance del acceso. Un usuario, un ID de servicio o un grupo de acceso en una empresa puede completar las tareas de gestión de la empresa:

  • En toda la empresa.
  • En un grupo de cuentas que podría contener otros grupos de cuentas y cuentas.
  • En una sola cuenta.

Por ejemplo, un usuario puede completar tareas dentro de un grupo de cuentas si se le asigna una política de acceso al servicio de gestión de cuentas de la empresa con un destino circunscrito a un grupo de cuentas específico. El usuario no puede completar acciones que afecten a toda la empresa, como actualizar el nombre o el dominio de la empresa, cuando el destino definido es una cuenta o un grupo de cuentas específico.

Puede asignar a usuarios de una cuenta secundaria de la empresa políticas de acceso que se apliquen a la gestión sólo de esa cuenta o de los recursos que contiene. Por ejemplo, si asigna un usuario de una cuenta secundaria un rol en el servicio de gestión de cuentas de Empresa, el usuario no puede realizar acciones en el nivel de cuenta de empresa. Debe añadirlo en la cuenta de empresa y asignar la política en ese contexto.

caption-side=bottom"

Políticas necesarias para trabajos específicos

Según el trabajo que se debe realizar, es posible que se necesite una combinación de políticas de acceso para un usuario que no sea el propietario de la empresa. En los ejemplos siguientes se proporciona el conjunto de políticas de acceso que debe asignar a un usuario de la empresa para que pueda completar tareas concretas.

Si es propietario de una cuenta que no forma parte de una empresa, pero desea que otro usuario de su cuenta pueda convertir su cuenta en una empresa, puede asignar a ese usuario el rol de Administrador en el servicio de Gestión de cuentas de facturación.

Visualización del uso y gestión de la facturación en la empresa

Para que un usuario pueda ver los informes de uso de todas las cuentas de la empresa, realizar los pagos y visualizar las facturas, debe asignar todas las políticas de acceso siguientes:

  • Rol de visor de informes de uso para el servicio de Gestión de cuentas de empresa en la cuenta de empresa
  • Rol de Administrador para el servicio de Gestión de cuentas de facturación en la cuenta de empresa

Importar una cuenta existente a la empresa

Para que un usuario pueda importar una cuenta existente de IBM Cloud a la empresa, debes asignarle todas las políticas de acceso siguientes:

  • Rol de administrador en el servicio de Gestión de cuentas de facturación de la cuenta que se va a importar
  • Rol de Administrador o de Editor en el servicio de gestión de cuentas de Empresa para el grupo de cuentas o la cuenta de empresa
  • Rol de Administrador en el servicio de Gestión de cuentas de facturación para la cuenta de empresa

Mover una cuenta

Para que un usuario pueda mover una cuenta dentro de una empresa, debe asignarle las siguientes políticas de acceso:

  • Rol de Administrador para el servicio de Gestión de cuentas de facturación en la cuenta de empresa

Y después, una de las dos opciones siguientes:

  • Rol de Administrador o de Editor para el servicio de Gestión de cuentas de empresa para toda la empresa
  • Rol de Administrador o Editor en el grupo de cuentas actual y de destino

Para obtener detalles sobre las acciones que pueden realizar los usuarios para cada rol, consulte Acciones y roles para los servicios de gestión de cuentas.

Gestión de la seguridad y conformidad

Para que un usuario pueda gestionar la seguridad y el cumplimiento normativo a través de IBM Cloud Security and Compliance Center Workload Protection, debe asignarle las siguientes políticas de acceso:

  • Función de administrador o editor para IBM Cloud Security and Compliance Center Workload Protection
  • Rol personalizado para la empresa

Para crear el rol personalizado con los permisos adecuados, consulte Control de acceso a través de IAM.

Creación y asignación de plantillas de IAM gestionadas por la empresa

Para crear plantillas de IAM gestionadas por la empresa, debes asignar el rol de «Administrador de plantillas» para todos los servicios de gestión de cuentas de IAM.

Para asignar plantillas de IAM gestionadas por la empresa a cuentas secundarias, debes asignar el rol de «Administrador de asignación de plantillas» para todos los servicios de gestión de cuentas de IAM y la política correspondiente, con al menos el rol de «Visor» en el servicio de la empresa.

De forma predeterminada, ningún usuario tiene estos permisos, incluido el propietario de la cuenta.

Para obtener detalles sobre las acciones que pueden realizar los usuarios para cada rol, consulte Acciones y roles para los servicios de gestión de cuentas.

Asignación del acceso en la consola

Para asignar una política de acceso a un usuario existente en la cuenta de empresa, realice los pasos siguientes:

Puede establecer el destino de la política de forma que sea para toda la empresa, para un grupo de cuentas específico, que puede incluir el acceso a todas las cuentas dentro del mismo, o incluso para una cuenta específica dentro de un grupo de cuentas.

  1. En la consola de IBM Cloud, pulse Gestionar > Acceso (IAM) y seleccione Usuarios.
  2. Desde la fila para el usuario al que desea asignar acceso, pulse el icono Acciones Icono Acciones y pulse Asignar acceso.
  3. En los servicios, seleccione Empresa.
  4. Pulse Siguiente.
  5. Limite el acceso a un grupo de recursos con cuentas hijo específicas o a todas las cuentas de la empresa. A continuación, pulse Siguiente.
  6. Seleccione la combinación que desee de roles o permisos y pulse Revisar.
  7. Pulse Añadir para añadir la configuración de política a su resumen de políticas.
  8. (Opcional) Repita los pasos para añadir acceso adicional.
  9. Pulse Asignar.

Para obtener más información sobre los roles y las acciones para asignar acceso en una cuenta empresarial, consulta « Asignación de acceso a los servicios de gestión de cuentas ».

Asignación de acceso mediante la CLI

Para crear una nueva política de acceso para un usuario, ejecute el mandato ibmcloud iam user-policy-create. En el mandato de ejemplo se utiliza un archivo JSON para especificar los detalles de la política. Revise el ejemplo de la sección Asignación de acceso utilizando la API para ver un ejemplo de qué incluir en el archivo JSON.

Cree una política de usuario:

ibmcloud iam user-policy-create name@example.com -f policy.json

Para obtener más información, consulte ibmcloud iam user-policy-create.

Asignación de acceso mediante la API

En la siguiente solicitud de ejemplo se asigna una política a un usuario con el rol de Editor sobre el servicio de Empresa en una cuenta de empresa que se circunscribe a un grupo de cuentas. Este tipo de política es jerárquico y se aplica a todos los objetos descendientes de la jerarquía, es decir, a todas las cuentas o grupos de cuentas dentro del grupo de cuentas de destino especificado.

curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -d '{
  "type": "access",
  "description": "Editor role for SERVICE_NAME's RESOURCE_NAME",
  "subjects": [
    {
      "attributes": [
        {
          "name": "iam_id",
          "value": "IBMid-123453user"
        }
      ]
    }'
  ],
  "roles":[
    {
      "role_id": "crn:v1:bluemix:public:iam::::role:Editor"
    }
  ],
  "resources":[
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "$ACCOUNT_ID"
        },
        {
          "name": "serviceName",
          "value": "$SERVICE_NAME"
        },
        {
          "name": "resource",
          "value": "$RESOURCE_NAME",
          "operator": "stringEquals"
        }
      ]
    }
  ]
}'
SubjectAttribute subjectAttribute = new SubjectAttribute.Builder()
        .name("iam_id")
        .value(EXAMPLE_USER_ID)
        .build();
PolicySubject policySubjects = new PolicySubject.Builder()
        .addAttributes(subjectAttribute)
        .build();
PolicyRole policyRoles = new PolicyRole.Builder()
        .roleId("crn:v1:bluemix:public:iam::::role:Viewer")
        .build();
ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
        .name("accountId")
        .value(exampleAccountId)
        .operator("stringEquals")
        .build();
ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
        .name("serviceType")
        .value("service")
        .operator("stringEquals")
        .build();
ResourceTag policyResourceTag = new ResourceTag.Builder()
        .name("project")
        .value("prototype")
        .operator("stringEquals")
        .build();
PolicyResource policyResources = new PolicyResource.Builder()
        .addAttributes(accountIdResourceAttribute)
        .addAttributes(serviceNameResourceAttribute)
        .addTags(policyResourceTag)
        .build();
CreatePolicyOptions options = new CreatePolicyOptions.Builder()
        .type("access")
        .subjects(Arrays.asList(policySubjects))
        .roles(Arrays.asList(policyRoles))
        .resources(Arrays.asList(policyResources))
        .build();
Response<Policy> response = service.createPolicy(options).execute();
Policy policy = response.getResult();
System.out.println(policy);
const policySubjects = [
  {
    attributes: [
      {
        name: 'iam_id',
        value: exampleUserId,
      },
    ],
  },
];
const policyRoles = [
  {
    role_id: 'crn:v1:bluemix:public:iam::::role:Viewer',
  },
];
const accountIdResourceAttribute = {
  name: 'accountId',
  value: exampleAccountId,
  operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
  name: 'serviceType',
  value: 'service',
  operator: 'stringEquals',
};
const policyResourceTag = {
  name: 'project',
  operator: 'stringEquals',
  value: 'prototype',
};
const policyResources = [
  {
    attributes: [accountIdResourceAttribute, serviceNameResourceAttribute],
    tags: [policyResourceTag],
  },
];
const params = {
  type: 'access',
  subjects: policySubjects,
  roles: policyRoles,
  resources: policyResources,
};
iamPolicyManagementService.createPolicy(params)
  .then(res => {
    examplePolicyId = res.result.id;
    console.log('createPolicy() result:\n' + JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
policy_subjects = PolicySubject(
  attributes=[SubjectAttribute(name='iam_id', value=example_user_id)])
policy_roles = PolicyRole(
  role_id='crn:v1:bluemix:public:iam::::role:Viewer')
account_id_resource_attribute = ResourceAttribute(
  name='accountId', value=example_account_id)
service_name_resource_attribute = ResourceAttribute(
  name='serviceType', value='service')
policy_resource_tag = ResourceTag(
  name='project', value='prototype')
policy_resources = PolicyResource(
  attributes=[account_id_resource_attribute,
        service_name_resource_attribute],
  tags=[policy_resource_tag])
policy = iam_policy_management_service.create_policy(
  type='access',
  subjects=[policy_subjects],
  roles=[policy_roles],
  resources=[policy_resources]
).get_result()
print(json.dumps(policy, indent=2))
subjectAttribute := &iampolicymanagementv1.SubjectAttribute{
  Name:  core.StringPtr("iam_id"),
  Value: &exampleUserID,
}
policySubjects := &iampolicymanagementv1.PolicySubject{
  Attributes: []iampolicymanagementv1.SubjectAttribute{*subjectAttribute},
}
policyRoles := &iampolicymanagementv1.PolicyRole{
  RoleID: core.StringPtr("crn:v1:bluemix:public:iam::::role:Viewer"),
}
accountIDResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
  Name:     core.StringPtr("accountId"),
  Value:    core.StringPtr(exampleAccountID),
  Operator: core.StringPtr("stringEquals"),
}
serviceNameResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
  Name:     core.StringPtr("serviceType"),
  Value:    core.StringPtr("service"),
  Operator: core.StringPtr("stringEquals"),
}
policyResourceTag := &iampolicymanagementv1.ResourceTag{
  Name:     core.StringPtr("project"),
  Value:    core.StringPtr("prototype"),
  Operator: core.StringPtr("stringEquals"),
}
policyResources := &iampolicymanagementv1.PolicyResource{
  Attributes: []iampolicymanagementv1.ResourceAttribute{
    *accountIDResourceAttribute, *serviceNameResourceAttribute},
  Tags: []iampolicymanagementv1.ResourceTag{*policyResourceTag},
}
options := iamPolicyManagementService.NewCreatePolicyOptions(
  "access",
  []iampolicymanagementv1.PolicySubject{*policySubjects},
  []iampolicymanagementv1.PolicyRole{*policyRoles},
  []iampolicymanagementv1.PolicyResource{*policyResources},
)
policy, response, err := iamPolicyManagementService.CreatePolicy(options)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(policy, "", "  ")
fmt.Println(string(b))

Para obtener más información, consulta « Crear una política ».