{{site.data.keyword.attribute-definition-list}}

Gerenciando o acesso do IAM para o {{site.data.keyword.registryshort_notm}}

Controle o acesso dos usuários ao {{site.data.keyword.registryshort_notm}} utilizando políticas de acesso e funções do IAM para definir quais ações os usuários podem realizar.

A cada usuário que acessar o serviço {{site.data.keyword.registrylong_notm}} em sua conta deve ser atribuída uma política de acesso do IAM com uma função do IAM. Um usuário também pode ser membro de um grupo de acesso ao qual tenham sido atribuídas políticas de acesso do IAM que concedem uma função do IAM. Revise as funções, ações e outros a seguir para ajudar a determinar a melhor maneira de designar acesso ao {{site.data.keyword.registryshort}}.

Para obter mais informações sobre o IAM, consulte “Introdução ao {{site.data.keyword.IBM_notm}} ” em {{site.data.keyword.iamshort}}.

Experimente o tutorial Concedendo acesso aos recursos do {{site.data.keyword.registryshort}}.

Políticas de acesso

A política de acesso do IAM que você designa aos usuários em sua conta determina as ações que um usuário pode executar dentro do contexto do serviço ou instância específica selecionada. As ações permitidas são customizadas e definidas pelo {{site.data.keyword.registryshort}} como operações que têm permissão de execução no serviço. Cada ação é mapeada para uma Função de plataforma ou serviço do IAM que você pode designar a um usuário.

As políticas permitem que o acesso seja concedido em diferentes níveis. Algumas opções incluem os seguintes níveis de acesso:

  • Acesso ao serviço em sua conta
  • Acesso a um recurso específico dentro do serviço
  • Acesso a todos os serviços ativados para o IAM em sua conta
  • Acesso aos recursos dentro de um grupo de recursos

Se você quiser restringir o acesso do usuário a um ou mais namespaces para um ID que está utilizando para automação, use um ID de serviço do IAM. Para obter mais informações sobre os IDs de serviço, consulte Criando e trabalhando com IDs de serviço.

Você pode configurar permissões para que você possa configurar o acesso a recursos dentro de um espaço de nomes no nível grupo de recursos. Para obter mais informações, consulte Permissões de usuário para trabalhar com namespaces.

Para obter mais informações sobre a ativação de políticas para o {{site.data.keyword.registryshort}}, consulte Definindo políticas de acesso do IAM.

Designar funções

Depois de definir o escopo da política de acesso do IAM, você designa uma função.

Se uma função específica e suas ações não se adequarem ao caso de uso que você deseja abordar, é possível criar uma função personalizada e selecionar as ações a serem incluídas.

Revise as tabelas a seguir que descrevem as ações que cada função permite no serviço {{site.data.keyword.registryshort}}.

  • As funções de gerenciamento da plataforma permitem que os usuários realizem tarefas nos recursos do serviço no nível da plataforma; por exemplo, atribuir acesso de usuários ao serviço, criar ou excluir instâncias e vincular instâncias a aplicativos.

  • Funções de acesso ao serviço habilitam os usuários acesso a {{site.data.keyword.registryshort}} e a capacidade de chamar a API {{site.data.keyword.registryshort}}.

Para obter mais informações sobre as ações exatas que são mapeadas para cada função, consulte Funções e ações do IAM para o {{site.data.keyword.registryshort}}.

Para obter mais informações sobre como atribuir funções de usuário no console do {{site.data.keyword.cloud_notm}}, consulte “Gerenciamento do acesso a recursos ”.

Restrições baseadas em contexto

{{site.data.keyword.registryshort}} também suporta restrições baseadas em contexto. É possível usar restrições baseadas em contexto para definir e impor restrições de acesso para recursos do {{site.data.keyword.cloud_notm}} com base no local de rede de solicitações de acesso. Essas restrições funcionam em conjunto com as políticas tradicionais de IAM, que se baseiam na identidade, para oferecer mais uma camada de proteção.

Para obter mais informações, consulte Protegendo recursos do {{site.data.keyword.registryshort}} com restrições baseadas em contexto.

Funções de gerenciamento de plataforma

A tabela a seguir detalha as ações que são mapeadas para funções de gerenciamento de plataforma. As funções de gerenciamento da plataforma permitem que os usuários executem tarefas em recursos de serviço no nível de plataforma, por exemplo, designar acesso de usuário para o serviço e criar ou excluir IDs de serviço.

Funções e ações de usuário do IAM
Funções de gerenciamento de plataforma Descrição das ações Ações de exemplo
Visualizador Não suportado Não aplicável
Editor Não suportado Não aplicável
Operador Não suportado Não aplicável
Administrador Configurar o acesso para outros usuários.

Aplicar segredos de extração em clusters.

Para obter mais informações sobre como atribuir funções de usuário no console do {{site.data.keyword.cloud_notm}}, consulte “Gerenciamento do acesso a recursos ”.

Para criar clusters no {{site.data.keyword.containerlong_notm}} que tenham segredos de extração para acessar imagens no {{site.data.keyword.registryshort}}, deve-se ter a função de Administrador. Para usar o comando ibmcloud ks cluster pull-secret apply para configurar os segredos de extração para um cluster existente, deve-se ter a função de Administrador. Para obter mais informações, consulte Preparando sua conta para criar clusters.

Funções de acesso de serviço

A tabela a seguir detalha as ações que são mapeadas para as funções de acesso de serviço. As funções de acesso de serviço dão aos usuários acesso ao {{site.data.keyword.registryshort}}, assim como a capacidade de chamar a API do {{site.data.keyword.registryshort}}.

Funções e ações de acesso ao serviço IAM
Função de acesso de serviço Descrição das ações Ações de exemplo
Leitor A função de Leitor pode visualizar informações. Visualizar, inspecionar e extrair imagens.

Visualizar e analisar namespaces.

Visualizar cotas.

Visualizar relatórios de vulnerabilidade.

Visualizar assinaturas de imagem.

Visualizar políticas de retenção.

Visualizar o conteúdo da lixeira.

Visualizar os conteúdos do manifest para uma imagem.

Listar políticas de isenção de segurança do Vulnerability Advisor e tipos de isenções de segurança.

Gravador A função de Gravador pode editar informações. Faça push, exclua e restaure imagens.

Visualizar cotas.

Assinar imagens.

Configurar e executar políticas de retenção.

Excluir todas as imagens não identificadas em sua conta do {{site.data.keyword.registryshort}}.

Gerente A função de Gerenciador pode executar todas as ações. Visualize, inspecione, faça pull e push, exclua e restaure imagens.

Visualizar, incluir, analisar e remover namespaces.

Designar namespaces a grupos de recursos.

Visualizar e configurar cotas.

Visualizar relatórios de vulnerabilidade.

Visualizar e criar assinaturas de imagem.

Revisar e mudar planos de precificação.

Ativar o cumprimento de política de acesso do IAM.

Listar, incluir e remover políticas de isenção de problema de segurança do Vulnerability Advisor.

Enumere os tipos de isenções de garantia.

Configurar e executar políticas de retenção.

Visualizar o conteúdo da lixeira.

Restaurar imagens.

Visualizar os conteúdos do manifest para uma imagem.

Evitar ou permitir pulls ou pushes de imagem em conexões de rede pública para a sua conta.

Verificar se o uso de conexões públicas é evitado para pushes ou pulls de imagem em sua conta.

Excluir todas as imagens não identificadas em sua conta do {{site.data.keyword.registryshort}}.

Para os comandos do {{site.data.keyword.registryshort}} a seguir, deve-se ter pelo menos uma das funções especificadas, conforme mostrado nas tabelas a seguir. Para criar uma política que permita o acesso ao {{site.data.keyword.registryshort}}, deve-se criar uma política na qual os critérios a seguir se aplicam.

  • O nome do serviço é container-registry.
  • A instância de serviço está vazia.
  • A região é aquela à qual você deseja conceder acesso ou está vazia para dar acesso a todas as regiões.

Funções de acesso para configurar o {{site.data.keyword.registryshort}}

Para conceder uma permissão de usuário para configurar o {{site.data.keyword.registryshort}} na conta, deve-se criar uma política que conceda uma ou mais funções na tabela a seguir. Ao criar a política, não se deve especificar um resource type ou resource. As políticas para configurar o {{site.data.keyword.registryshort}} não devem ser definidas no nível de um grupo de recursos.

Por exemplo, execute o comando ibmcloud iam user-policy-create a seguir. Em que USER_EMAIL é o endereço de e-mail do usuário, REGION é a região e ROLES é a função ou funções que você deseja que o usuário tenha.

ibmcloud iam user-policy-create USER_EMAIL --service-name container-registry --region REGION --roles ROLES

A tabela a seguir detalha ações que são mapeadas para operações no serviço e para as funções de acesso de serviço para configurar o {{site.data.keyword.registryshort}}.

Ações e operações de serviço para configurar o {{site.data.keyword.registryshort
Ação Operação em serviço Função
container-registry.auth.get ibmcloud cr private-only Verificar se o uso de conexões públicas é evitado para pushes ou pulls de imagem em sua conta. Gerente
container-registry.auth.set ibmcloud cr iam-policies-enable Ativar o cumprimento de política de acesso do IAM.

ibmcloud cr private-only Evitar ou permitir pulls ou pushes de imagem em conexões de rede pública para a sua conta.

Gerente
container-registry.exemption.list ibmcloud cr exemption-list Liste suas políticas de isenção do Consultor de vulnerabilidade para problemas de segurança.

ibmcloud cr exemption-types Listar os tipos de problemas de segurança que podem ser isentados.

Leitor, Gerenciador
container-registry.exemption.manager ibmcloud cr exemption-add Crie uma política de isenção do Consultor de vulnerabilidade para um problema de segurança.

ibmcloud cr exemption-rm Excluir uma política de isenção do Vulnerability Advisor para um problema de segurança.

Gerente
container-registry.namespace.create ibmcloud cr namespace-add Criar um namespace.

ibmcloud cr namespace-assign Designar um namespace a um grupo de recursos.

Gerente
container-registry.namespace.delete ibmcloud cr namespace-rm Remova um namespace. Gerente
container-registry.plan.get ibmcloud cr plan Exiba seu plano de precificação. Gerente
container-registry.plan.set ibmcloud cr plan-upgrade Faça upgrade para o plano padrão. Gerente
container-registry.quota.get ibmcloud cr quota Exiba suas cotas atuais para tráfego e armazenamento e informações de uso em relação às cotas. Leitor, Gravador, Gerenciador
container-registry.quota.set ibmcloud cr quota-set Modifique a cota especificada. Gerente
container-registry.settings.get ibmcloud cr platform-metrics Obtenha as configurações do serviço de registro para a conta de destino, como se as métricas de plataforma estão ativadas. Leitor, Gravador, Gerenciador
container-registry.settings.set ibmcloud cr platform-metrics Atualize as configurações do serviço de registro para a conta de destino, como ao ativar as métricas de plataforma. Gerente

Funções de acesso para usar o {{site.data.keyword.registryshort}}

Para conceder uma permissão de usuário para o acesso ao conteúdo do {{site.data.keyword.registryshort}} na conta, deve-se criar uma política que conceda uma ou mais das funções na tabela a seguir. Ao criar sua política, é possível restringir o acesso a um namespace específico especificando o tipo de recurso namespace e o nome do namespace como o recurso. Se você não especificar um resource-type e um resource, a política concederá acesso a todos os recursos na conta. Como alternativa, se seu namespace estiver dentro de um grupo de recursos, a permissão poderá ser concedida usando-se uma política de acesso do IAM nesse grupo de recursos.

Por exemplo, use o comando a seguir para criar uma política de usuário. Em que USER_EMAIL é o endereço de e-mail do usuário, REGION é a região, ROLES é a função ou funções que você deseja que o usuário tenha, e NAMESPACE_NAME é o nome do namespace.

ibmcloud iam user-policy-create USER_EMAIL --service-name container-registry --region REGION --roles ROLES [--resource-type namespace --resource NAMESPACE_NAME]

A tabela a seguir detalha ações que são mapeadas para operações no serviço e para as funções de acesso de serviço para uso do {{site.data.keyword.registryshort}}.

Ações e operações de serviço para usar {{site.data.keyword.registryshort
Ação Operação em serviço Função
container-registry.image.delete docker trust revoke Exclui a assinatura de uma imagem de contêiner.

ibmcloud cr image-prune-untagged Excluir todas as imagens não identificadas em sua conta do {{site.data.keyword.registryshort}}.

ibmcloud cr image-rm Excluir uma ou mais imagens de contêiner.

ibmcloud cr image-untag Remover uma tag, ou tags, de cada imagem de contêiner especificada no {{site.data.keyword.registryshort}}.

ibmcloud cr retention-policy-set Configure uma política para limpar seus namespaces, retendo apenas imagens de contêiner que atendam aos seus critérios.

ibmcloud cr retention-run Limpar seus namespaces retendo apenas imagens de contêiner que atendem seus critérios.

Gravador, Gerenciador

Para executar ibmcloud cr retention-run e ibmcloud cr retention-policy-set, é necessário ter uma função de Gerenciador ou funções de Leitor e Gravador.

container-registry.image.inspect ibmcloud cr image-inspect Exiba detalhes sobre uma imagem de contêiner específica.

ibmcloud cr manifest-inspect Visualizar os conteúdos do manifest para uma imagem.

Leitor, Gerenciador
container-registry.image.list ibmcloud cr image-digests Liste todas as suas imagens de contêiner, incluindo imagens sem tag.

ibmcloud cr image-list Liste suas imagens de contêiner com tag.

ibmcloud cr image-prune-untagged Excluir todas as imagens não identificadas em sua conta do {{site.data.keyword.registryshort}}.

ibmcloud cr trash-list Exibir as imagens de contêiner que estão na lixeira.

Leitor, Gerenciador
container-registry.image.pull docker pull Extrai uma imagem de contêiner.

docker trust inspect Inspeciona a assinatura de uma imagem de contêiner.

ibmcloud cr image-tag Crie uma imagem de contêiner que se refere a uma imagem de origem.

ibmcloud cr vulnerability-assessment Visualizar um relatório de avaliação de vulnerabilidades para sua imagem de contêiner.

Leitor, Gravador, Gerenciador
container-registry.image.push docker push Envia por push uma imagem de contêiner.

docker trust sign Assina uma imagem de contêiner.

ibmcloud cr image-restore Restaure uma imagem de contêiner excluída da lixeira.

ibmcloud cr image-tag Crie uma imagem de contêiner que se refere a uma imagem de origem.

Gravador, Gerente
container-registry.namespace.list ibmcloud cr namespace-list Listar seus namespaces. Leitor, Gerenciador
container-registry.retention.analyze ibmcloud cr retention-policy-set Configure uma política para limpar seus namespaces, retendo apenas imagens de contêiner que atendam aos seus critérios.

ibmcloud cr retention-run Limpar seus namespaces retendo apenas imagens de contêiner que atendem seus critérios.

Leitor, Gerenciador

Para executar ibmcloud cr retention-run e ibmcloud cr retention-policy-set, é necessário ter uma função de Gerenciador ou funções de Leitor e Gravador.

container-registry.retention.get Visualize a política de retenção de imagem para um namespace usando a API, consulte API do {{site.data.keyword.registrylong_notm}}. Leitor, Gerenciador
container-registry.retention.set ibmcloud cr retention-policy-set Configurar uma política para limpar seus namespaces retendo apenas imagens de contêineres que atendem seus critérios. Gravador, Gerente
container-registry.retention.list ibmcloud cr retention-policy-list Liste as políticas de retenção de imagem para sua conta. Leitor, Gerenciador

Atribuição de acesso ao {{site.data.keyword.registryshort}} no console {{site.data.keyword.cloud_notm}}

Você pode usar uma das opções a seguir para atribuir acesso no console do {{site.data.keyword.cloud_notm}}:

  • 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 do {{site.data.keyword.cloud_notm}}. Para obter mais informações sobre as etapas de atribuição de acesso ao IAM, consulte Atribuição de acesso a recursos no console.
  • 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. Você gerencia os grupos de acesso e seus direitos de acesso na página Gerenciar > Acesso (IAM) > Grupos de acesso no console do {{site.data.keyword.cloud_notm}}. Para obter mais informações, consulte Designando acesso a um grupo no console..

Atribuição de acesso ao {{site.data.keyword.registryshort}} na interface de linha de comando (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 Manager para {{site.data.keyword.registryshort}} a um usuário, em que USER_EMAIL é o endereço de e-mail do usuário.

Use container-registry para o nome do serviço.

ibmcloud iam user-policy-create USER_EMAIL --service-name container-registry --roles Manager

Designando acesso ao {{site.data.keyword.registryshort}} 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
Administrador crn:v1:bluemix:public:container-registry::::serviceRole:Administrator
Leitor crn:v1:bluemix:public:container-registry::::serviceRole:Reader
Gravador crn:v1:bluemix:public:container-registry::::serviceRole:Writer
Gerente crn:v1:bluemix:public:container-registry::::serviceRole:Manager

O exemplo a seguir é para designar a função Manager ao {{site.data.keyword.registryshort}}:

Use “ container-registry ” como nome do serviço e consulte a tabela de valores de ID de função para garantir 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": "Manager role for Container Registry",
  "subjects": [
    {
      "attributes": [
        {
          "name": "iam_id",
          "value": "IBMid-123453user"
        }
      ]
    }'
  ],
  "roles":[
    {
      "role_id": "crn:v1:bluemix:public:container-registry::::serviceRole:Manager"
    }
  ],
  "resources":[
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "$ACCOUNT_ID"
        },
        {
          "name": "serviceName",
          "value": "container-registry"
        }
      ]
    }
  ]
}
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:container-registry::::serviceRole:Manager")
      .build();
ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
      .name("accountId")
      .value("ACCOUNT_ID")
      .operator("stringEquals")
      .build();
ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
      .name("serviceName")
      .value("container-registry")
      .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:container-registry::::serviceRole:Manager',
  },
];
const accountIdResourceAttribute = {
  name: 'accountId',
  value: 'ACCOUNT_ID',
  operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
  name: 'serviceName',
  value: 'container-registry',
  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:container-registry::::serviceRole:Manager')
account_id_resource_attribute = ResourceAttribute(
  name='accountId', value='ACCOUNT_ID')
service_name_resource_attribute = ResourceAttribute(
  name='serviceName', value='container-registry')
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:container-registry::::serviceRole:Manager"),
}
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("container-registry"),
  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))

Designando acesso ao {{site.data.keyword.registryshort}} usando o Terraform

O exemplo a seguir é para designar a função Manager ao {{site.data.keyword.registryshort}}:

Use container-registry para o nome do serviço.

resource "ibm_iam_user_policy" "policy" {
  ibm_id = "test@example.com"
  roles  = ["Manager"]
  resources {
    service = "container-registry"
  }
}

Para obter mais informações, consulte ibm_iam_user_policy na documentação do Terraform.