Conexão de serviços a aplicativos

Conecte seus aplicativos ou ferramentas de terceiros aos serviços IBM Cloud gerando um novo conjunto de credenciais de serviço. Essas credenciais funcionam como uma ponte entre seu aplicativo, seja ele hospedado em IBM Cloud® ou em uma plataforma externa como AWS, e o serviço IBM Cloud® que você deseja usar. Por exemplo, se estiver integrando um aplicativo hospedado em AWS com watsonx Assistant, você gera uma credencial de serviço que fornece o acesso necessário. Em seguida, você pode adicioná-lo à configuração do seu aplicativo para estabelecer a conexão.

Para adicionar credenciais aos seus aplicativos, consulte a documentação do tipo de aplicativo ou opção de computação que você está usando.

Criação de uma credencial de serviço

As credenciais que só podem ser visualizadas uma vez devem ser salvas com segurança se você precisar recuperá-las posteriormente. As credenciais existentes não são afetadas por essa propriedade. Para obter mais informações, consulte Credenciais únicas.

Os serviços que são gerenciados pelo IBM Cloud Identity and Access Management (IAM) podem gerar uma chave de recursos, também conhecida como uma credencial. Credenciais são específicas do serviço e variam com base em como cada serviço define as credenciais que eles precisam gerar. Uma credencial pode conter um nome de usuário, uma senha, um nome de host, uma porta e um endereço URL, mas o conteúdo de cada credencial é exclusivo do serviço que a gera.

Alguns serviços podem gerar mais dados que requerem que parâmetros sejam passados. Por exemplo, um serviço pode requerer que você insira um parâmetro de linguagem para configurar a linguagem padrão que é retornada na chave de recursos gerada.

As credenciais únicas são desativadas por padrão para todos os serviços que suportam credenciais de serviço (também conhecidas como chaves de recurso). Para obter mais informações sobre os serviços que suportam credenciais de serviço, consulte Serviços suportados do IBM Cloud.

Para adicionar credenciais ao seu serviço:

Conclua as etapas a seguir para adicionar uma credencial a um serviço:

  1. Na lista de recursos, selecione o nome do serviço para abrir a página de detalhes do serviço.

  2. Clique em Credenciais de serviço.

  3. Verifique a configuração One-time view, que determina se você pode recuperar os valores da chave de recurso posteriormente.

    1. Defina como Ativado ou Desativado, dependendo do seu caso de uso. Os usuários com a função de Administrador na instância do recurso podem gerenciar essa configuração usando a API do Controlador de Recursos.

      Defina como Ativado para ajudar a garantir a conformidade com as práticas recomendadas e os regulamentos de segurança, como o PCI DSS, impedindo o acesso compartilhado a credenciais.

  4. Clique em Criar credencial.

  5. Digite um nome.

  6. Atribua uma função de acesso ao serviço IAM. Para obter mais informações sobre funções, consulte IBM Cloud Funções de IAM.

    1. Especifique None para não atribuir nenhuma função à nova credencial se quiser gerenciar o acesso associando uma ID de serviço nova ou existente à credencial de serviço.
  7. (Opcional) Selecione um ID de serviço existente ou crie um novo ID de serviço para associar à credencial. Dessa forma, você pode gerenciar o acesso diretamente no IAM, acessando Gerenciar > Acesso (IAM) > IDs de serviço. Para obter mais informações, consulte Criando e trabalhando com IDs de serviço.

    Para serviços que têm acesso a recursos de granulação mais fina, talvez você queira usar um ID de serviço para conceder acesso somente a um sub-recurso, como um bucket Object Storage.

  8. Clique em Opções avançadas para fornecer mais parâmetros como um objeto JSON válido que contém parâmetros de configuração específicos do serviço, fornecidos em linha ou em um arquivo.

    A maioria dos serviços não requer parâmetros extras e, para serviços que fazem isso, cada serviço define sua própria lista exclusiva de parâmetros. Para obter uma lista dos parâmetros de configuração compatíveis, consulte a documentação do serviço específico.

  9. Clique em Create (Criar ) para gerar a nova credencial de serviço.

    As credenciais de serviço são somente leitura. O usuário pode copiar ou baixar as credenciais.

  10. Se a credencial estiver definida para visualização única, ela não poderá ser visualizada novamente.

  11. Expanda os detalhes de sua nova credencial de serviço. Copie as propriedades da credencial que seu aplicativo ou consumidor externo precisa. Por exemplo, a chave ou a senha da API e URL.

Criação de uma credencial de serviço usando a API

As credenciais que só podem ser visualizadas uma vez devem ser salvas com segurança se você precisar recuperá-las posteriormente. As credenciais existentes não são afetadas por essa propriedade. Para obter mais informações, consulte Credenciais únicas.

IBM Cloud os serviços podem gerar uma chave de recurso, também conhecida como credencial. Credenciais são específicas do serviço e variam com base em como cada serviço define as credenciais que eles precisam gerar. Uma credencial pode conter um nome de usuário, uma senha, um nome de host, uma porta e um endereço URL, mas o conteúdo de cada credencial é exclusivo do serviço que a gera.

Alguns serviços podem gerar mais dados que requerem que parâmetros sejam passados. Por exemplo, um serviço pode requerer que você insira um parâmetro de linguagem para configurar a linguagem padrão que é retornada na chave de recursos gerada.

Você pode atribuir uma função de acesso ao serviço IAM a novas credenciais geradas para um serviço IBM Cloud. Essa função concede acesso a toda a instância do serviço, não a um recurso específico. Para serviços que têm acesso a recursos de granulação mais fina, talvez você queira conceder acesso somente a um sub-recurso, como um bucket Object Storage. Nesse caso, não atribua nenhuma função à nova credencial. Dessa forma, você pode gerenciar o acesso de granularidade fina associando a credencial a um ID de serviço e criar uma política de IAM que você alcance para um recurso específico, como um bucket. Para fazer isso, vá para Gerenciar > Acesso (IAM) > IDs de serviço. Selecione o ID do serviço com o mesmo nome da chave de credencial do serviço e clique em Atribuir acesso.

Para criar uma chave de recursos, chame a API do Resource Controller, conforme mostrado no exemplo a seguir:

curl -X POST https://resource-controller.cloud.ibm.com/v2/resource_keys -H 'Authorization: Bearer <IAM_TOKEN>' -H 'Content-Type: application/json' -d '{
  "name": "my-instance-key-1",
  "source": "267bf377-7fa2-43f6-94ec-09103a8e89d4",
  "role": "Writer"
}'
ResourceKeyPostParameters parameters = new ResourceKeyPostParameters.Builder()
  .add("exampleParameter", "exampleValue")
  .build();
CreateResourceKeyOptions createResourceKeyOptions = new CreateResourceKeyOptions.Builder()
  .name(keyName)
  .source(instanceGuid)
  .parameters(parameters)
  .build();

Response<ResourceKey> response = service.createResourceKey(createResourceKeyOptions).execute();
ResourceKey resourceKey = response.getResult();

System.out.printf("createResourceKey() response:\n%s\n", resourceKey.toString());
const parameters = {
  'exampleParameter': 'exampleValue'
};

const params = {
  name: keyName,
  source: instanceGuid,
  parameters: parameters,
};

resourceControllerService.createResourceKey(params)
  .then(res => {
    instanceKeyGuid = res.result.guid;
    console.log('createResourceKey() response:\n' + JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
parameters = {
    'exampleParameter': 'exampleValue'
}
resource_key = resource_controller_service.create_resource_key(
    name=key_name,
    source=instance_guid,
    parameters=parameters
).get_result()

print('\ncreate_resource_key() response:\n',
      json.dumps(resource_key, indent=2))
createResourceKeyOptions := resourceControllerService.NewCreateResourceKeyOptions(
  keyName,
  instanceGUID,
)

parameters := &resourcecontrollerv2.ResourceKeyPostParameters{}
parameters.SetProperty("exampleParameter", "exampleValue")
createResourceKeyOptions.SetParameters(parameters)

resourceKey, response, err := resourceControllerService.CreateResourceKey(createResourceKeyOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(resourceKey, "", "  ")
fmt.Printf("\nCreateResourceKey() response:\n%s\n", string(b))

Use a chave da API ou outras propriedades de credenciais para conectar a instância do serviço ao seu aplicativo ou a outro consumidor externo.

Criação de uma credencial de serviço usando o Terraform

As credenciais que só podem ser visualizadas uma vez devem ser salvas com segurança se você precisar recuperá-las posteriormente. As credenciais existentes não são afetadas por essa propriedade. Para obter mais informações, consulte Credenciais únicas.

Uma credencial pode conter um nome de usuário, uma senha, um nome de host, uma porta e um endereço URL, mas o conteúdo de cada credencial é exclusivo do serviço que gera it.Before. Você pode criar uma credencial para conectar seu aplicativo ou consumidor externo a um serviço IBM Cloud usando o Terraform:

  • Instale o CLI Terraform e configure o plug-in do Provedor IBM Cloud Provider para Terraform. Para obter mais informações, veja o tutorial para Introdução ao Terraform em IBM Cloud®. O plug-in abstrai as APIs do IBM Cloud que são usadas para concluir esta tarefa.
  • Crie um arquivo de configuração do Terraform que seja denominado main.tf. Neste arquivo, você define recursos usando o HashiCorp Configuration Language. Para obter mais informações, consulte a documentação do Terraform.

Use as etapas a seguir para criar uma credencial para conectar seu aplicativo ou consumidor externo a um serviço IBM Cloud:

  1. Crie um argumento em seu arquivo main.tf. O exemplo a seguir cria credenciais para um recurso sem um ID de serviço usando o recurso ibm_resource_instance, em que name é um nome exclusivo para identificar a credencial.

    data "ibm_resource_instance" "resource_instance" {
     name = "myobjectsotrage"
    }
    
    resource "ibm_resource_key" "resourceKey" {
     name                 = "myobjectkey"
     role                 = "Viewer"
     resource_instance_id = data.ibm_resource_instance.resource_instance.id
    
     //User can increase timeouts
     timeouts {
       create = "15m"
      delete = "15m"
     }
    }
    

    Por padrão, o recurso ibm_resource_key cria credenciais de serviço que usam o terminal de serviço público de um serviço

    É possível especificar tags associadas à instância do grupo de recursos. Para obter mais informações, consulte os detalhes de referência do argumento na página Terraform Resource Management.

  2. Após finalizar a construção do seu arquivo de configuração, inicialize o CLI Terraform. Para obter mais informações, consulte Inicializando as Diretorias de Trabalho.

    terraform init
    
  3. Provisionar os recursos a partir do arquivo main.tf. Para obter mais informações, consulte Infraestrutura Provisória com Terraform.

    1. Execute terraform plan para gerar um plano de execução Terraforme para pré-visualizar as ações propostas.

      terraform plan
      
    2. Execute terraform apply para criar os recursos que estão definidos no plano.

      terraform apply
      

Use a chave da API ou outras propriedades de credenciais para conectar a instância do serviço ao seu aplicativo ou a outro consumidor externo.

Visualização de uma credencial usando o Terraform

Você pode recuperar uma credencial após a criação somente se onetime_credentials for false para essa credencial. Os usuários com o seguinte acesso na instância do recurso podem visualizar os valores da chave de serviço para credenciais que tenham onetime_credentials configurado para false.

  • Usuários com acesso à instância do serviço que seja igual ou superior ao acesso da credencial do serviço. Para obter mais informações, consulte Acesso em nível de credencial.
  • Usuários com a função de Administrador na instância de serviço
  • Usuários com a ação IAM resource-controller.credential.retrieve_all. Essa ação é fornecida com a função de Administrador.

Para visualizar uma credencial de serviço existente para um serviço, conclua as etapas a seguir:

  1. Crie um argumento em seu arquivo main.tf. O exemplo a seguir recupera uma credencial existente para um recurso. Para obter mais informações, consulte a documentação do Terraform sobre ibm_resource_key.

    data "ibm_resource_key" "resourceKeydata" {
      name                  = "myobjectKey"
      resource_instance_id  = ibm_resource_instance.resource.id
    }
    
  2. Após finalizar a construção do seu arquivo de configuração, inicialize o CLI Terraform. Para obter mais informações, consulte Inicializando as Diretorias de Trabalho.

    terraform init
    
  3. Provisionar os recursos a partir do arquivo main.tf. Para obter mais informações, consulte Infraestrutura Provisória com Terraform.

    1. Execute terraform plan para gerar um plano de execução Terraforme para pré-visualizar as ações propostas.

      terraform plan
      
    2. Execute terraform apply para criar os recursos que estão definidos no plano.

      terraform apply
      

Credenciais únicas

Uma instância de recurso tem uma propriedade onetime_credentials que determina se as credenciais que você cria para essa instância são de visualização única. A configuração da instância no momento da criação determina como a propriedade é definida para cada credencial e não é possível mudá-la posteriormente.

  • Se essa propriedade for definida como false, a credencial poderá ser recuperada a qualquer momento pelos usuários com acesso. Para obter mais informações sobre como recuperar uma credencial, consulte a documentação do Terraform ibm_resource_key.

  • Se essa propriedade for definida como true, você poderá visualizar a credencial somente na criação

    Salve as credenciais de visualização única de forma segura usando um gerenciador de segredos, um gerenciador de senhas ou um armazenamento seguro, como Object Storage, em seu aplicativo para evitar perdas.

Habilite a visualização única em instâncias de serviço para alinhar-se ao modelo de privilégio mínimo e evitar o acesso compartilhado a credenciais. As chaves compartilhadas podem dificultar a auditoria de como as identidades da sua conta acessam os recursos.

Gerenciar a configuração de visualização única para uma instância de recurso

Os usuários com a função Administrador ou a ação IAM resource-controller.instance.update_onetime_credential_off na instância de serviço podem gerenciar a configuração de visualização única de uma instância de recurso.

 {
      "displayName": {
        "default": "Resource Instance Update Onetime Credential Off"
      },
      "description": {
        "default": "The ability to change onetime_credential from On to Off for existing instances."
      },
      "id": "resource-controller.instance.update_onetime_credential_off",
      "roles": [
        "crn:v1:bluemix:public:iam::::role:Administrator"
      ],
      "apiTypes": [
        "crn:v1:bluemix:public:context-based-restrictions::::platform-api-type:resource-management"
      ]
    }

Para obter mais informações, consulte a documentação do Terraform do ibm_resource_instance para atualizar a propriedade onetime_credentials. Quando você altera a configuração de uma instância, as credenciais existentes mantêm a configuração que tinham no momento da criação.

Acesso de nível de credencial

O acesso do usuário deve ser igual ou maior do que o acesso da credencial de serviço. Por exemplo, se a credencial tiver a função de serviço do IAM Writer, o usuário que está tentando visualizar a credencial deverá ter a função de serviço do IAM Writer ou Manager para esse serviço específico designado. Quando um usuário não tem o acesso correto, detalhes como o valor da chave de API são editados:

    "credentials": {
        "REDACTED": "REDACTED"
    },

Acesso de nível do IAM

Quando o acesso no nível de credencial não puder ser determinado comparando o acesso do usuário e a credencial, a credencial será editada:

    "credentials": {
        "REDACTED": "REDACTED_EXPLICIT"
    },

Visualizando uma credencial

Depois que uma credencial é criada para um serviço que tem onetime_credentials configurado para false, ela pode ser visualizada a qualquer momento pelos usuários que precisam dos valores da credencial. No entanto, todos os usuários devem ter o nível correto de acesso para ver os detalhes de uma credencial que inclui o valor da chave de API. Você pode recuperar uma credencial após a criação somente se a visualização única estiver desativada para essa credencial. Os usuários com o seguinte acesso na instância do recurso podem visualizar os valores da chave de serviço para credenciais com a visualização única desativada.

  • Usuários com acesso à instância do serviço que seja igual ou superior ao acesso da credencial do serviço. Para obter mais informações, consulte Acesso em nível de credencial.
  • Usuários com a função de Administrador na instância de serviço.
  • Usuários com a ação IAM resource-controller.credential.retrieve_all. Essa ação é fornecida com a função de Administrador.

Para visualizar uma credencial de serviço existente para um serviço, conclua as etapas a seguir:

  1. Na página Lista de recursos, selecione o nome do serviço para abrir a página de detalhes do serviço.
  2. Clique em Credenciais de serviço.
  3. Expanda Visualizar credenciais na linha para uma credencial existente.

Credenciais únicas

A credencial tem uma propriedade onetime_credentials que determina se você pode recuperar e visualizar a credencial após sua criação inicial. Se a propriedade for false, os usuários com acesso poderão visualizar os valores das credenciais a qualquer momento. Uma instância de recurso possui uma configuração de "Visualização única" que determina se as credenciais que você cria para essa instância são de visualização única. As credenciais de visualização única podem ser visualizadas e salvas somente no momento da criação. A configuração da instância no momento da criação determina como a propriedade é definida para cada credencial e não é possível mudá-la posteriormente.

  • Se a visualização única estiver "Desligada", a credencial poderá ser recuperada a qualquer momento pelos usuários com acesso.

  • Se a visualização única for "Ativada", você poderá visualizar a credencial somente na criação.

    Salve as credenciais de visualização única de forma segura usando um gerenciador de segredos, um gerenciador de senhas ou um armazenamento seguro, como Object Storage, em seu aplicativo para evitar perdas.

Habilite a visualização única em instâncias de serviço para alinhar-se ao modelo de privilégio mínimo e evitar o acesso compartilhado a credenciais. As chaves compartilhadas podem dificultar a auditoria de como as identidades da sua conta acessam os recursos.

Gerenciar a configuração de visualização única para uma instância de recurso

Os usuários com a função de Administrador ou a ação IAM resource-controller.instance.update_onetime_credential_off em uma instância de serviço podem gerenciar a configuração de visualização única dessa instância.

 {
      "displayName": {
        "default": "Resource Instance Update Onetime Credential Off"
      },
      "description": {
        "default": "The ability to change onetime_credential from On to Off for existing instances."
      },
      "id": "resource-controller.instance.update_onetime_credential_off",
      "roles": [
        "crn:v1:bluemix:public:iam::::role:Administrator"
      ],
      "apiTypes": [
        "crn:v1:bluemix:public:context-based-restrictions::::platform-api-type:resource-management"
      ]
    }

Para obter mais informações, consulte a API do Controlador de Recursos para atualizar a propriedade onetime_credentials em uma instância. Quando você altera a configuração de uma instância, as credenciais existentes mantêm a configuração que tinham no momento da criação.

As credenciais existentes criadas antes dessa alteração de propriedade não são afetadas.

Acesso de nível de credencial

O acesso do usuário deve ser igual ou maior do que o acesso da credencial de serviço. Por exemplo, se a credencial tiver a função de serviço do IAM Writer, o usuário que estiver tentando visualizar a credencial deverá ter a função de serviço do IAM Writer ou Manager para esse serviço específico designado. Quando um usuário não tem o acesso correto, detalhes como o valor da chave de API são editados:

    "credentials": {
        "REDACTED": "REDACTED"
    },

Acesso de nível do IAM

Quando o acesso no nível de credencial não puder ser determinado comparando o acesso do usuário e a credencial, a credencial será editada:

    "credentials": {
        "REDACTED": "REDACTED_EXPLICIT"
    },

Para visualizar a credencial, o usuário deve ter a ação de acesso de nível do IAM resource-controller.credential.retrieve_all. Esta ação é dada com a função de Administrador, e substitui qualquer acesso de nível de credencial possibilitando que o usuário visualize a credencial.

Visualizando uma credencial usando a API

Depois que uma credencial é criada para um serviço que tem onetime_credentials configurado para false, ela pode ser visualizada a qualquer momento pelos usuários que precisam dos valores da credencial. No entanto, todos os usuários devem ter o nível correto de acesso para ver os detalhes de uma credencial que inclui o valor da chave de API. O acesso do usuário deve ser igual ou maior que o da credencial de serviço. Por exemplo, se a credencial tiver a função de serviço do IAM Writer, o usuário que estiver tentando visualizar a credencial deverá ter a função de serviço do IAM Writer ou Manager atribuída a esse serviço específico. Você pode recuperar uma credencial após a criação somente se onetime_credentials for false para essa credencial. Os usuários com o seguinte acesso na instância do recurso podem visualizar os valores da chave de serviço para credenciais que tenham onetime_credentials configurado para false.

  • Usuários com acesso à instância do serviço que seja igual ou superior ao acesso da credencial do serviço. Para obter mais informações, consulte Acesso em nível de credencial.
  • Usuários com a função de Administrador na instância de serviço.
  • Usuários com a ação IAM resource-controller.credential.retrieve_all. Essa ação é fornecida com a função de Administrador.

Para obter uma lista de todas as chaves de recursos, chame a API do Resource Controller como mostrado no exemplo a seguir:

curl -X GET https://resource-controller.cloud.ibm.com/v2/resource_keys -H 'Authorization: Bearer <IAM_TOKEN>'
ListResourceKeysOptions listResourceKeysOptions = new ListResourceKeysOptions.Builder()
  .name(keyName)
  .build();

Response<ResourceKeysList> response = service.listResourceKeys(listResourceKeysOptions).execute();
ResourceKeysList resourceKeysList = response.getResult();

System.out.printf("listResourceKeys() response:\n%s\n", resourceKeysList.toString());
const params = {
  name: keyName,
};

resourceControllerService.listResourceKeys(params)
  .then(res => {
    console.log('listResourceKeys() response:\n' + JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
resource_keys_list = resource_controller_service.list_resource_keys(
    name=key_name
).get_result()

print('\nlist_resource_keys() response:\n',
      json.dumps(resource_keys_list, indent=2))
listResourceKeysOptions := resourceControllerService.NewListResourceKeysOptions()
listResourceKeysOptions = listResourceKeysOptions.SetName(keyName)

resourceKeysList, response, err := resourceControllerService.ListResourceKeys(listResourceKeysOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(resourceKeysList, "", "  ")
fmt.Printf("\nListResourceKeys() response:\n%s\n", string(b))

Resposta de exemplo:

{
  "rows_count": 1,
  "next_url": null,
  "resources": [
    {
      "id": "crn:v1:bluemix:public:cloud-object-storage:global:a/4329073d16d2f3663f74bfa955259139:8d7af921-b136-4078-9666-081bd8470d94:resource-key:23693f48-aaa2-4079-b0c7-334846eff8d0",
      "guid": "23693f48-aaa2-4079-b0c7-334846eff8d0",
      "url": "/v2/resource_keys/23693f48-aaa2-4079-b0c7-334846eff8d0",
      "created_at": "2018-07-02T22:03:43.837979455Z",
      "updated_at": "2018-07-02T22:03:43.837979455Z",
      "deleted_at": null,
      "created_by": "IBMid-5500093BHN",
      "updated_by": "IBMid-5500093BHN",
      "deleted_by": "",
      "source_crn": "crn:v1:bluemix:public:cloud-object-storage:global:a/4329073d16d2f3663f74bfa955259139:8d7af921-b136-4078-9666-081bd8470d94::",
      "role": "crn:v1:bluemix:public:iam::::serviceRole:Writer",
      "name": "my-instance-key-1",
      "parameters": {
        "role_crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer"
      },
      "crn": "crn:v1:bluemix:public:cloud-object-storage:global:a/4329073d16d2f3663f74bfa955259139:8d7af921-b136-4078-9666-081bd8470d94:resource-key:23693f48-aaa2-4079-b0c7-334846eff8d0",
      "state": "active",
      "account_id": "4329073d16d2f3663f74bfa955259139",
      "resource_group_id": "0be5ad401ae913d8ff665d92680664ed",
      "resource_id": "dff97f5c-bc5e-4455-b470-411c3edbe49c",
      "onetime_credentials": false,
      "credentials": {
        "apikey": "XXXX-YYYY-ZZZZ\"",
        "endpoints": "https://cos-service-armada-s.us-south.containers.mybluemix.net/endpoints",
        "iam_apikey_description": "Auto generated apikey during resource-key operation for Instance - crn:v1:bluemix:public:cloud-object-storage:global:a/4329073d16d2f3663f74bfa955259139:8d7af921-b136-4078-9666-081bd8470d94::",
        "iam_apikey_name": "auto-generated-apikey-23693f48-aaa2-4079-b0c7-334846eff8d0",
        "iam_role_crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer",
        "iam_serviceid_crn": "crn:v1:bluemix:public:iam-identity::a/4329073d16d2f3663f74bfa955259139::serviceid:ServiceId-64c29e4f-422d-468c-a11b-1a8f671b5c89",
        "resource_instance_id": "crn:v1:bluemix:public:cloud-object-storage:global:a/4329073d16d2f3663f74bfa955259139:8d7af921-b136-4078-9666-081bd8470d94::"
      },
      "iam_compatible": true,
      "migrated": false,
      "resource_instance_url": "/v2/resource_instances/8d7af921-b136-4078-9666-081bd8470d94",
      "resource_alias_url": null
    }
  ]
}

Credenciais únicas

Uma instância de recurso tem uma propriedade onetime_credentials que determina se as credenciais que você cria para essa instância são de visualização única. A configuração da instância no momento da criação determina como a propriedade é definida para cada credencial e não é possível mudá-la posteriormente.

  • Se essa propriedade for definida como false, a credencial poderá ser recuperada a qualquer momento pelos usuários com acesso. Para obter mais informações sobre a recuperação de uma credencial, consulte a operação Get resource key.

  • Se essa propriedade estiver definida como true, você poderá visualizar a credencial somente na criação, portanto, certifique-se de salvá-la com segurança.

    Salve as credenciais de visualização única de forma segura usando um gerenciador de segredos, um gerenciador de senhas ou um armazenamento seguro, como Object Storage, em seu aplicativo para evitar perdas.

Habilite a visualização única em instâncias de serviço para alinhar-se ao modelo de privilégio mínimo e evitar o acesso compartilhado a credenciais. As chaves compartilhadas podem dificultar a auditoria de como as identidades da sua conta acessam os recursos.

Gerenciar a configuração de visualização única para uma instância de recurso

Os usuários com a função de Administrador ou a ação IAM resource-controller.instance.update_onetime_credential_off em uma instância de serviço podem gerenciar a configuração de visualização única dessa instância.

 {
      "displayName": {
        "default": "Resource Instance Update Onetime Credential Off"
      },
      "description": {
        "default": "The ability to change onetime_credential from On to Off for existing instances."
      },
      "id": "resource-controller.instance.update_onetime_credential_off",
      "roles": [
        "crn:v1:bluemix:public:iam::::role:Administrator"
      ],
      "apiTypes": [
        "crn:v1:bluemix:public:context-based-restrictions::::platform-api-type:resource-management"
      ]
    }

Para obter mais informações, consulte a API do Controlador de Recursos para atualizar a propriedade onetime_credentials em uma instância. Quando você altera a configuração de uma instância, as credenciais existentes mantêm a configuração que tinham no momento da criação.

Acesso de nível de credencial

O acesso do usuário deve ser igual ou maior do que o acesso da credencial de serviço. Por exemplo, se a credencial tiver a função de serviço do IAM Writer, o usuário que está tentando visualizar a credencial deverá ter a função de serviço do IAM Writer ou Manager para esse serviço específico designado. Quando um usuário não tem o acesso correto, detalhes como o valor da chave de API são editados:

    "credentials": {
        "REDACTED": "REDACTED"
    },

Acesso de nível do IAM

Quando o acesso no nível de credencial não puder ser determinado comparando o acesso do usuário e a credencial, a credencial será editada:

    "credentials": {
        "REDACTED": "REDACTED_EXPLICIT"
    },

Para visualizar a credencial, o usuário deve ter a ação de acesso de nível do IAM resource-controller.credential.retrieve_all. Esta ação é dada com a função de Administrador, e substitui qualquer acesso de nível de credencial possibilitando que o usuário visualize a credencial.