Concesión de acceso a IBM Cloud Logs

El acceso a los recursos de configuración de IBM Cloud para usuarios y aplicaciones de su cuenta está controlado por IBM Cloud® Identity and Access Management (IAM). Cada usuario o aplicación que acceda al servicio IBM Cloud Logs en su cuenta debe tener asignada una política de acceso con un rol IAM. Revise los siguientes roles, acciones y más para ayudar a determinar la mejor manera de asignar el acceso a IBM Cloud Logs.

Puede asignar acceso a IBM Cloud Logs utilizando cualquiera de los métodos siguientes:

  • Políticas de acceso por usuario

  • Grupos de acceso

    Los grupos de acceso se utilizan para agilizar la gestión de accesos mediante la asignación de acceso a un grupo una vez y, a continuación, puede añadir o eliminar usuarios según sea necesario del grupo para controlar su acceso.

    Se puede crear un grupo de acceso para organizar un conjunto de usuarios, ID de servicio y perfiles de confianza en una sola entidad, lo que facilita la asignación de acceso. Puede asignar una única política al grupo en lugar de asignar el mismo acceso varias veces para un ID de usuario o servicio individual. Para obtener más información, consulte Configuración de grupos de acceso.

    Para organizar un conjunto de usuarios e IDs de servicio en una única entidad que le facilite la gestión de permisos IAM, utilice los grupos de acceso. Puede asignar una única política al grupo en lugar de asignar el mismo acceso varias veces por usuario individual o ID de servicio.

  • Perfiles de confianza

    Puede utilizar perfiles de confianza para otorgar a diferentes identidades de IBM Cloud® acceso a los recursos de su cuenta. Otorgue automáticamente a los usuarios federados acceso a su cuenta con condiciones basadas en atributos SAML desde su directorio corporativo. O bien, utilice perfiles de confianza para establecer una autorización detallada para las aplicaciones que se ejecutan en recursos informáticos. De este modo, no es necesario crear ID de servicio o claves de API para los recursos de cálculo. También puede establecer la confianza con los servicios o ID de servicio de IBM Cloud en otra cuenta para otorgar acceso entre cuentas. Para obtener más información, consulte Creación de perfiles de confianza.

Si tiene permiso de IAM para crear políticas y autorizaciones, puede conceder sólo el nivel de acceso que tenga como usuario del servicio de destino. Por ejemplo, si tiene acceso de espectador para el servicio de destino, puede asignar sólo el rol de espectador para la autorización. Si intenta asignar un permiso superior, como el de administrador, puede parecer que se concede el permiso, sin embargo, sólo se asignará el permiso de nivel más alto que tenga para el servicio de destino, es decir, el de espectador.

Asignación de acceso a IBM Cloud Logs en la consola

Hay dos formas habituales de asignar acceso a IBM Cloud Logs en la consola:

  • Grupos de acceso. Puede gestionar los grupos de acceso y su acceso desde la página Gestionar > Acceso (IAM) > Grupos de acceso en la consola. Para obtener más información, consulte Asignación de acceso a un grupo en la consola.

  • Políticas de acceso por usuario. Puede gestionar políticas de acceso por usuario desde la página Gestionar > Acceso (IAM) > Usuarios de la consola. Para obtener información sobre los pasos de asignación de acceso IAM, consulte Gestión del acceso a los recursos.

Asignación de acceso a IBM Cloud Logs en la CLI

Para obtener instrucciones detalladas para asignar, eliminar y revisar el acceso, consulte Asignación de acceso a recursos utilizando la CLI. El siguiente ejemplo muestra un comando para asignar el rol Viewer para IBM Cloud Logs:

Utilice logs para el nombre de servicio. Además, entrecomille los nombres de funciones que contengan más de una palabra.

ibmcloud iam user-policy-create name@example.com --service-name logs --roles "Viewer"

Asignación de acceso a IBM Cloud Logs mediante la API

Para obtener instrucciones paso a paso para asignar, eliminar y revisar el acceso, consulte Asignación de acceso a recursos utilizando la API o Crear documentos de API de política. Los nombres de recurso de nube de rol (CRN) de la tabla siguiente se utilizan para asignar acceso con la API.

Valores de ID de rol para uso de la API
Nombre de rol CRN de rol
Visor crn:v1:bluemix:public:logs::::serviceRole:Viewer
Operador crn:v1:bluemix:public:logs::::serviceRole:Operator
Editor crn:v1:bluemix:public:logs::::serviceRole:Editor
Administrador crn:v1:bluemix:public:logs::::serviceRole:Administrator

El siguiente ejemplo es para asignar el rol Viewer para IBM Cloud Logs:

Utilice logs para el nombre de servicio y consulte la tabla de valores de ID de rol para asegurarse de que está utilizando el valor correcto para el CRN.

curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -d '{
  "type": "access",
  "description": "Viewer role for IBM Cloud Logs",
  "subjects": [
    {
      "attributes": [
        {
          "name": "iam_id",
          "value": "IBMid-123453user"
        }
      ]
    }
  ],
  "roles":[
    {
      "role_id": "crn:v1:bluemix:public:logs::::serviceRole:Viewer"
    }
  ],
  "resources":[
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "$ACCOUNT_ID"
        },
        {
          "name": "serviceName",
          "value": "logs"
        }
      ]
    }
  ]
}'
SubjectAttribute subjectAttribute = new SubjectAttribute.Builder()
      .name("iam_id")
      .value("IBMid-123453user")
      .build();

PolicySubject policySubjects = new PolicySubject.Builder()
      .addAttributes(subjectAttribute)
      .build();

PolicyRole policyRoles = new PolicyRole.Builder()
      .roleId("crn:v1:bluemix:public:logs::::serviceRole:Viewer")
      .build();

ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
      .name("accountId")
      .value("ACCOUNT_ID")
      .operator("stringEquals")
      .build();

ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
      .name("serviceName")
      .value("logs")
      .operator("stringEquals")
      .build();

PolicyResource policyResources = new PolicyResource.Builder()
      .addAttributes(accountIdResourceAttribute)
      .addAttributes(serviceNameResourceAttribute)
      .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: 'IBMid-123453user',
      },
    ],
  },
];
const policyRoles = [
  {
    role_id: 'crn:v1:bluemix:public:logs::::serviceRole:Viewer',
  },
];
const accountIdResourceAttribute = {
  name: 'accountId',
  value: 'ACCOUNT_ID',
  operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
  name: 'serviceName',
  value: 'logs',
  operator: 'stringEquals',
};
const policyResources = [
  {
    attributes: [accountIdResourceAttribute, serviceNameResourceAttribute]
  },
];
const params = {
  type: 'access',
  subjects: policySubjects,
  roles: policyRoles,
  resources: policyResources,
};

iamPolicyManagementService.createPolicy(params)
  .then(res => {
    examplePolicyId = res.result.id;
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
policy_subjects = PolicySubject(
  attributes=[SubjectAttribute(name='iam_id', value='IBMid-123453user')])
policy_roles = PolicyRole(
  role_id='crn:v1:bluemix:public:logs::::serviceRole:Viewer')
account_id_resource_attribute = ResourceAttribute(
  name='accountId', value='ACCOUNT_ID')
service_name_resource_attribute = ResourceAttribute(
  name='serviceName', value='logs')
policy_resources = PolicyResource(
  attributes=[account_id_resource_attribute,
        service_name_resource_attribute])

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: core.StringPtr("IBMid-123453user"),
}
policySubjects := &iampolicymanagementv1.PolicySubject{
  Attributes: []iampolicymanagementv1.SubjectAttribute{*subjectAttribute},
}
policyRoles := &iampolicymanagementv1.PolicyRole{
  RoleID: core.StringPtr("crn:v1:bluemix:public:logs::::serviceRole:Viewer"),
}
accountIDResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
  Name:     core.StringPtr("accountId"),
  Value:    core.StringPtr("ACCOUNT_ID"),
  Operator: core.StringPtr("stringEquals"),
}
serviceNameResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
  Name:     core.StringPtr("serviceName"),
  Value:    core.StringPtr("logs"),
  Operator: core.StringPtr("stringEquals"),
}
policyResources := &iampolicymanagementv1.PolicyResource{
  Attributes: []iampolicymanagementv1.ResourceAttribute{
    *accountIDResourceAttribute, *serviceNameResourceAttribute}
}

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))

Asignación de acceso a IBM Cloud Logs mediante Terraform

El siguiente ejemplo es para asignar el rol Viewer para IBM Cloud Logs:

Utilice logs para el nombre de servicio.

resource "ibm_iam_user_policy" "policy" {
  ibm_id = "test@example.com"
  roles  = ["Viewer"]

  resources {
    service = "logs"
  }
}

Para obtener más información, consulte el recurso de terraform ibm_iam_user_policy.