Concessão de acesso a IBM Cloud Logs

O acesso aos recursos de configuração do IBM Cloud para usuários e aplicativos em sua conta é controlado pelo IBM Cloud® Identity and Access Management (IAM). Todos os usuários ou aplicativos que acessam o serviço IBM Cloud Logs em sua conta devem receber uma política de acesso com uma função de IAM. Analise as seguintes funções, ações e muito mais para ajudar a determinar a melhor maneira de atribuir acesso a IBM Cloud Logs.

É possível designar acesso ao IBM Cloud Logs usando qualquer um dos métodos a seguir:

  • Políticas de acesso por usuário

  • Grupos de acesso

    Os grupos de acesso são usados para aperfeiçoar o gerenciamento de acesso, designando acesso a um grupo uma vez, em seguida, podendo incluir ou remover usuários do grupo, conforme necessário, para controlar seus acessos.

    Um grupo de acesso pode ser criado para organizar um conjunto de usuários, IDs de serviço e perfis confiáveis em uma única entidade que facilite designar acesso. É possível designar uma única política ao grupo em vez de designar o mesmo acesso diversas vezes para um usuário individual ou ID de serviço. Para obter mais informações, consulte Configurando grupos de acesso.

    Para organizar um conjunto de usuários e IDs de serviço em uma única entidade que facilite o gerenciamento das permissões do IAM, use grupos de acesso. É possível designar uma política única ao grupo em vezde designar o mesmo acesso diversas vezes por usuário ou ID de serviço individual.

  • Perfis confiáveis

    É possível usar perfis confiáveis para conceder a diferentes identidades do IBM Cloud® acesso aos recursos em sua conta. Conceda automaticamente aos usuários federados acesso à sua conta com condições baseadas em atributos SAML do seu diretório corporativo. Ou use perfis confiáveis para configurar uma autorização refinada para aplicativos que estejam sendo executados em recursos de computação. Como resultado, não é necessário criar IDs de serviço ou chaves de API para os recursos de cálculo. Também é possível estabelecer confiança com serviços ou IDs de serviço do IBM Cloud em outra conta para conceder acesso entre contas. Para obter mais informações, consulte Criando perfis confiáveis.

Se você tiver a permissão do IAM para criar políticas e autorizações, poderá conceder apenas o nível de acesso que possui como usuário do serviço de destino. Por exemplo, se você tiver acesso de visualizador para o serviço de destino, poderá atribuir somente a função de visualizador para a autorização. Se você tentar atribuir uma permissão mais alta, como administrador, pode parecer que a permissão foi concedida; no entanto, somente a permissão de nível mais alto que você tem para o serviço de destino, ou seja, visualizador, será atribuída.

Atribuição de acesso a IBM Cloud Logs no console

Há duas maneiras comuns de atribuir acesso a IBM Cloud Logs no console:

  • Grupos de acesso. Você pode gerenciar grupos de acesso e seus acessos na página Gerenciar > Acesso (IAM) > Grupos de acesso no console. Para obter mais informações, consulte Designado acesso a um grupo no console.

  • Políticas de acesso por usuário. É possível gerenciar políticas de acesso por usuário na página Gerenciar > Acesso (IAM) > Usuários no console. Para obter informações sobre as etapas para designar o acesso do IAM, consulte Gerenciando o acesso aos recursos.

Atribuição de acesso a IBM Cloud Logs na CLI

Para obter instruções passo a passo para designar, remover e revisar o acesso, consulte Designando acesso a recursos usando a CLI. O exemplo a seguir mostra um comando para atribuir a função Viewer para IBM Cloud Logs:

Use logs para o nome do serviço. Além disso, use aspas ao redor de nomes de funções que contenham mais de uma palavra.

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

Atribuição de acesso a IBM Cloud Logs usando a API

Para obter instruções passo a passo para designar, remover e revisar o acesso, consulte Designando acesso a recursos usando a API ou Criar uma política nos docs da API. Os cloud resource names (CRNs) de função na tabela a seguir são usados para designar acesso com a API.

Valores de ID de função para uso da API
Nome da função CRN de função
Visualizador 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

O exemplo a seguir é para atribuir a função Viewer para IBM Cloud Logs:

Use logs para o nome do serviço e consulte a tabela Valores de ID de função para assegurar que você esteja usando o valor correto para o 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))

Atribuição de acesso a IBM Cloud Logs usando o Terraform

O exemplo a seguir é para atribuir a função Viewer para IBM Cloud Logs:

Use logs para o nome do serviço.

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

  resources {
    service = "logs"
  }
}

Para obter mais informações, consulte o recurso do terraform ibm_iam_user_policy