Gerenciando o acesso do usuário
IBM Cloud Hyper Protect Crypto Services suporta um sistema de controle de acesso centralizado, que é regido por IBM Cloud® Identity and Access Management, para ajudá-lo a gerenciar usuários e acesso para as suas chaves de criptografia.
Funções e permissões
A tabela a seguir mostra as funções suportadas pelo Hyper Protect Crypto Services.
| Funções | Permissões |
|---|---|
| Administrador do serviço | Gerencia o acesso à plataforma e o acesso de serviço, concede acesso a áreas seguras, cria e exclui instâncias de serviço e gerencia chaves. Um proprietário da conta do IBM Cloud é designado automaticamente para a permissão do administrador de serviço. |
| Administrador de unidade de criptografia | Fornece chaves de assinatura e assina comandos administrativos do Trusted Key Entry (TKE), como o comando para incluir outro administrador da unidade criptográfica. Em alguns casos, um administrador da unidade criptográfica também pode ser um custodiante de chave mestra. |
| Administrador de chave mestra | Fornece partes da chave mestra para inicializar uma instância de serviço. Em alguns casos, um custodiante de chave mestra também pode ser um administrador da unidade criptográfica. |
| Usuário do serviço | Gerencia chaves raiz e chaves padrão por meio da interface com o usuário e da API e executa operações criptográficas por meio da API PKCS n.º 11 ou da API Enterprise PKCS n.º 11 sobre gRPC (GREP11). Com base nas funções de acesso à plataforma e nas funções de acesso ao serviço, os usuários do serviço podem ser categorizados ainda mais com várias permissões. |
Funções de acesso à plataforma do IAM
Com o Cloud Identity and Access Management (IAM), você, como um proprietário de conta ou um administrador de serviços, pode gerenciar e definir o acesso a usuários e recursos do serviço em sua conta do IBM Cloud.
Para simplificar o acesso, os Hyper Protect Crypto Services são alinhados com as funções do IAM para que cada usuário tenha uma visualização diferente do serviço, de acordo com a função à qual o usuário está designado. Se você for um administrador de serviço, será possível designar funções do Cloud IAM que correspondem às permissões específicas do Hyper Protect Crypto Services que você deseja conceder aos membros de sua equipe.
A tabela a seguir lista as funções do IAM IBM Cloud no contexto de Hyper Protect Crypto Services. Para obter a documentação completa do IAM e como designar o acesso, consulte Melhores práticas para configurar funções customizadas para o Unified Key Orchestrator.
Use as funções de acesso da plataforma IBM Cloud para conceder permissões no nível da conta, como a capacidade de criar ou excluir instâncias em sua conta do IBM Cloud.
| Ação | Visualizador | Editor | Operador | Administrador |
|---|---|---|---|---|
| Visualizar instâncias do Hyper Protect Crypto Services. | ||||
| Criar instâncias Hyper Protect Crypto Services. | ||||
| Excluir instâncias Hyper Protect Crypto Services. | ||||
| Convidar novos usuários e gerenciar políticas de acesso. |
Se você é um proprietário de conta, você tem designado automaticamente o acesso de Administrador à plataforma para suas instâncias de serviço do Hyper Protect Crypto Services, para que você possa designar mais funções e customizar políticas de acesso para outros usuários.
Funções de acesso de serviço do IAM
Como um administrador de serviço, é possível usar as funções de acesso de serviço para conceder permissões de usuários de serviço no nível de serviço, como a capacidade de visualizar, criar ou excluir chaves do Hyper Protect Crypto Services.
- Como um Leitor, é possível procurar uma visualização de alto nível de chaves. Os leitores não podem criar, modificar ou excluir chaves.
- Como um LeitorPlus, você tem as mesmas permissões de um Leitor, com a capacidade adicional de recuperar um material de uma chave padrão.
- Como um Gravador, é possível criar, modificar, girar e usar chaves. Os gravadores não podem excluir ou desativar chaves.
- Como um Gerenciador, é possível executar todas as ações que um Leitor, um LeitorPlus e um Gravador podem executar, incluindo a capacidade de excluir chaves e definir políticas para chaves.
- Como um Gerenciador KMIP VMware, é possível configurar o KMIP for VMware com Hyper Protect Crypto Services para ativar a criptografia com suas próprias chaves raiz.
- Como um Administrador de área segura, é possível gerenciar áreas seguras, keystores e modelos, além de executar ações de ciclo de vida destrutivas em chaves gerenciadas no Unified Key Orchestrator. Diferentes áreas seguras podem ser usadas para separar equipes, linhas de negócios ou clientes. Também é possível incluir keystores pagos se você já exceder o limite de keystores grátis.
- Como um Administrador de chaves - Criador, é possível criar e gerenciar chaves no Unified Key Orchestrator. Para um ciclo de vida de chave completo, são necessárias as funções de Administrador de chaves - Criador e Administrador de chaves - Implementador.
- Como um Administrador de chaves - Implementador, é possível implementar e gerenciar chaves no Unified Key Orchestrator. Para um ciclo de vida de chave completo, são necessárias as funções de Administrador de chaves - Criador e Administrador de chaves - Implementador.
Para implementar a separação de obrigações, designe Administrador de chaves - Criador e Administrador de chaves - Implementador para diferentes pessoas.
A tabela a seguir mostra como as funções de acesso ao serviço são mapeadas para permissões do Hyper Protect Crypto Services. As funções do IAM são as funções padrão fornecidas. Também é possível definir e criar funções customizadas de nível de serviço de acordo com as necessidades da sua empresa.
-
O Trusted Key Entry (TKE) usa cartões inteligentes ou o plug-in da CLI do software com autenticação IAM. Os comandos que lidam com o gerenciamento de chaves localmente no cartão inteligente ou na CLI não estão incluídos. Esses comandos não interagem com o domínio do HSM.
-
O Unified Key Orchestrator é usado para gerenciamento de chave multicloud e orquestração. Além de configurar funções padrão do IAM, também é possível criar funções customizadas do Unified Key Orchestrator de acordo com as suas necessidades.
-
As APIs do HSM (a API PKCS n.º 11 e a API GREP11) são usadas para criptografia de nível do aplicativo.
-
O adaptador do Key Management Interoperability Protocol (KMIP) é usado para configurar o serviço KMIP for VMware com Hyper Protect Crypto Services para ativar a criptografia vSphere ou criptografia vSAN usando suas próprias chaves raiz.
| Ação | Leitor | ReaderPlus | Gravador | Gerente |
|---|---|---|---|---|
Estado de visualização do TKE: ibmcloud tke cryptounit-admins,ibmcloud tke cryptounit-compare,ibmcloud tke cryptounit-thrhlds,ibmcloud tke cryptounit-mk. |
||||
Contexto do conjunto do TKE: ibmcloud tke-cryptounit-add, ibmcloud tke-cryptounit-rm. |
||||
Incluir ou remover administrador do TKE: ibmcloud tke cryptounit-admin-add, ibmcloud tke cryptounit-admin-rm. |
||||
Configurar limite do quorum do administrador do TKE: ibmcloud tke -cryptounit-thrhld-set. |
||||
Operações de chave mestra do TKE (carregar, girar, limpar, zerar, recuperar): ibmcloud tke cryptounit-mk-*, ibmcloud tke auto-init, ibmcloud tke auto-mk-rotate, ibmcloud tke auto-recover. |
| Ação | Leitor | Administrador de chaves - Implementador | Administrador de chaves - Criador | Administrador da área segura | Gerente |
|---|---|---|---|---|---|
| Ativar uma chave pré-ativa. | |||||
| Destruir uma chave pré-ativa. | |||||
| Desativar uma chave ativa. | |||||
| Atribua uma chave ativa. | |||||
| Desvincular uma chave ativa | |||||
| Destruir uma chave desativada. | |||||
| Atribua uma chave desativada. | |||||
| Reativar uma chave desativada. | |||||
| Desvincular uma chave desativada | |||||
| Remover uma chave destruída da área segura. | |||||
| Ler detalhes da chave gerenciada. | |||||
| Listar chaves gerenciadas. | |||||
| Gravar ou editar detalhes da chave gerenciada. | |||||
| Gire uma chave gerenciada. | |||||
| Excluir uma chave gerenciada. | |||||
| Gerar materiais de chave para uma chave. | |||||
| Distribuir uma chave para keystores designados. | |||||
| Gravar datas de ativação ou expiração da chave. | |||||
| Gravar tags de chave. | |||||
| Leia os detalhes do keystore. | |||||
| Listar armazenamentos de chaves | |||||
| Grave ou edite os detalhes do keystore. | |||||
| Excluir um keystore interno ou desconectar-se de um keystore externo. | |||||
| Ler detalhes do modelo de chave. | |||||
| Listar modelos de chave. | |||||
| Gravar ou editar modelos de chave. | |||||
| Excluir modelos de chave. | |||||
| Ler detalhes da área segura. | |||||
| Listar áreas seguras. | |||||
| Gravar ou editar detalhes da área segura. | |||||
| Excluir uma área segura. | |||||
| Iniciar faturamento do preço base do UKO usando keystores externos. | |||||
| Criar um keystore pago além da quantia grátis. |
| Ação | Leitor | ReaderPlus | Gravador | Gerente | Limpeza de chave do KMS |
|---|---|---|---|---|---|
| Criar uma chave. | |||||
| Importar uma chave. | |||||
| Recuperar uma chave. | |||||
| Recuperar metadados de chave. | |||||
| Recuperar o total de chaves. | |||||
| Listar chaves. | |||||
| Agrupar uma chave. | |||||
| Desagrupar uma chave. | |||||
| Reagrupar uma chave. | |||||
| Corrigir uma chave. | |||||
| Girar uma chave. | |||||
| Desativar uma chave. | |||||
| Ativar uma chave. | |||||
| Planejar exclusão para uma chave. | |||||
| Cancelar exclusão para uma chave. | |||||
| Excluir uma chave. | |||||
| Ler uma chave. | |||||
| Restaurar uma chave. | |||||
| Configurar políticas de chave. | |||||
| Listar políticas de chave. | |||||
| Configurar políticas de instância. | |||||
| Listar políticas de instância. | |||||
| Criar um token de importação. | |||||
| Recuperar um token de importação. | |||||
| Criar um registro.1 | |||||
| Liste registros para uma chave. | |||||
| Liste registros para qualquer chave. | |||||
| Atualizar um registro.1 | |||||
| Substituir um registro.1 | |||||
| Excluir um registro.1 | |||||
| Crie um conjunto de chaves. | |||||
| Liste conjuntos de chaves. | |||||
| Exclua um conjunto de chaves. | |||||
| Crie um alias de chave. | |||||
| Exclua um alias de chave. |
1: esta ação é realizada em seu nome por um serviço integrado que permite o suporte para registro de chaves. Saiba mais.
| Ação | Leitor | ReaderPlus | Gravador | Gerente |
|---|---|---|---|---|
| Obtenha lista e informações de mecanismos | ||||
| Crie ou exclua um keystore | ||||
| Listar keystores | ||||
| Gerar chave | ||||
| Gerar par de chaves | ||||
| Armazenar chave | ||||
| Gerar aleatório | ||||
| Listar chaves | ||||
| Obtenha ou configure um atributo de chave | ||||
| Agrupar chave | ||||
| Reagrupar chave | ||||
| Desagrupar chave | ||||
| Chave de atualização | ||||
| Encrypt | ||||
| Decrypt | ||||
| Assinar | ||||
| Verificar | ||||
| Compilação |
| Ação | Leitor | ReaderPlus | Gravador | Gerente | Gerenciador do KMIP VMware |
|---|---|---|---|---|---|
| Ativar terminal do KMIP. | |||||
| Desativar terminal do KMIP. | |||||
| Obter status do terminal do KMIP. | |||||
| Incluir certificados de cliente ao terminal do KMIP para uso de TLS mútuo. | |||||
| Excluir certificados de cliente ao terminal do KMIP para uso de TLS mútuo. |
Designando acesso ao Hyper Protect Crypto Services na IU
Há duas maneiras comuns de designar o acesso na IU:
- 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 na IU. Para obter informações sobre as etapas para designar o acesso do IAM, consulte Gerenciando o acesso aos recursos.
- 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 grupos de acesso e seu acesso na página Gerenciar > Acesso (IAM) > Grupos de acesso na IU. Para obter mais informações, consulte Designando acesso a um grupo na UI.
Designando acesso ao Hyper Protect Crypto Services 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 designar a função Writer para a instância de serviço:
Use <hs-crypto> para o nome do serviço. Além disso, use aspas em torno de nomes de função que têm mais de uma palavra, como o exemplo aqui.
ibmcloud iam user-policy-create USER@EXAMPLE.COM --service-name hs-crypto --service-instance <instance-id> --roles "Writer"
Designando acesso ao Hyper Protect Crypto Services 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.
| Nome da função | CRN de função |
|---|---|
| Visualizador | crn:v1:bluemix:public:hs-crypto::::serviceRole:Viewer |
| Operador | crn:v1:bluemix:public:hs-crypto::::serviceRole:Operator |
| Editor | crn:v1:bluemix:public:hs-crypto::::serviceRole:Editor |
| Administrador | crn:v1:bluemix:public:hs-crypto::::serviceRole:Administrator |
| Leitor | crn:v1:bluemix:public:hs-crypto::::serviceRole:Reader |
| ReaderPlus | crn:v1:bluemix:public:hs-crypto::::serviceRole:ReaderPlus |
| Gravador | crn:v1:bluemix:public:hs-crypto::::serviceRole:Writer |
| Gerente | crn:v1:bluemix:public:hs-crypto::::serviceRole:Manager |
| Gerenciador do KMIP VMware | crn:v1:bluemix:public:hs-crypto::::serviceRole:VMwareKMIPManager |
| Administrador de área segura | crn:v1:bluemix:public:hs-crypto::::serviceRole:VaultAdministrator |
| Administrador de chaves - Criador | crn:v1:bluemix:public:hs-crypto::::serviceRole:KeyCustodianCreator |
| Administrador de chaves - Implementador | crn:v1:bluemix:public:hs-crypto::::serviceRole:KeyCustodianDeployer |
O exemplo a seguir mostra a designação da função Writer para a instância de serviço:
Use <hs-crypto> 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": "Hyper Protect Crypto Services",
"subjects": [
{
"attributes": [
{
"name": "iam_id",
"value": "IBMid-123453user"
}
]
}'
],
"roles":[
{
"role_id": "crn:v1:bluemix:public:hs-crypto::::serviceRole:Writer"
}
],
"resources":[
{
"attributes": [
{
"name": "accountId",
"value": "$ACCOUNT_ID"
},
{
"name": "serviceName",
"value": "hs-crypto"
}
]
}
]
}
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:hs-crypto::::serviceRole:Writer")
.build();
ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
.name("accountId")
.value("ACCOUNT_ID")
.operator("stringEquals")
.build();
ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
.name("serviceName")
.value("hs-crypto")
.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:hs-crypto::::serviceRole:Writer',
},
];
const accountIdResourceAttribute = {
name: 'accountId',
value: 'ACCOUNT_ID',
operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
name: 'serviceName',
value: 'hs-crypto',
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:hs-crypto::::serviceRole:Writer')
account_id_resource_attribute = ResourceAttribute(
name='accountId', value='ACCOUNT_ID')
service_name_resource_attribute = ResourceAttribute(
name='serviceName', value='hs-crypto')
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:hs-crypto::::serviceRole:Writer"),
}
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("hs-crypto"),
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 Container Registry usando o Terraform
O exemplo a seguir mostra a designação da função Writer para a sua instância de serviço:
Use <hs-crypto> para o nome do serviço.
resource "ibm_iam_user_policy" "policy" {
ibm_id = "test@example.com"
roles = ["Writer"]
resources {
service = "hs-crypto"
}
}
Para obter mais informações, consulte ibm_iam_user_policy.
Gerenciando o acesso a diversas instâncias
Se você tiver diversas instâncias dos Hyper Protect Crypto Services em contas diferentes, poderá ser necessário usar as empresas IBM Cloud para gerenciar as contas e o acesso de usuário.
-
Criar a hierarquia corporativa
Com o IBM Cloud empresas, é possível gerenciar centralmente várias contas e recursos. É possível criar uma hierarquia corporativa conforme a necessidade por meio do aninhamento de grupos de contas ou contas dentro da conta corporativa. O gerenciamento de acesso à empresa e às contas filhos são isolados para oferecer maior segurança. Para saber como criar uma empresa e incluir contas em uma empresa, consulte Melhores práticas para organizar recursos e designar acesso.
-
Organizar recursos de conta em grupos de recursos
As instâncias dos Hyper Protect Crypto Services estão associadas a contas-filhas da empresa. Dentro de cada conta, é possível organizar instâncias de serviço em grupos de recursos para que seja possível atribuir diferentes políticas de acesso a cada grupo de recursos para permitir o controle de acesso independente. Para saber como criar grupos de recursos e organizar recursos, consulte Melhores práticas para organizar recursos.
-
Designar acesso para gerenciar a empresa e os recursos
Com base no Hyper Protect Crypto Services IAM funções da plataforma e funções de serviço que são listados, é possível designar aos usuários o respectivo acesso a cada camada da hierarquia corporativa. Também é possível agrupar usuários ou IDs de serviço definindo grupos de acesso para aperfeiçoar o processo de designação de acesso. Para obter mais informações sobre como designar o acesso, Gerenciamento de acesso na nuvem
-
Usar chaves de API da IBM Cloud
É possível criar chaves de API da IBM Cloud para usuários ou serviços para rastrear e controlar o uso da API. A chave de API do usuário está associada à identidade do usuário e herda todo o acesso ao qual o usuário está designado. É concedido à chave de API de serviço o acesso associado a um ID de serviço específico. As chaves de API também podem ser usadas para gerar tokens do IAM para autenticação de chamadas da API. Para saber como gerenciar chaves de API, consulte Gerenciando chaves de API do usuário e Gerenciando chaves de API do ID de serviço.
O exemplo a seguir mostra como usar a empresa para gerenciar várias instâncias e o acesso de usuário. Suponha que sua organização tenha duas instâncias do Hyper Protect Crypto Services para desenvolvimento e produção, e duas equipes separadas estejam gerenciando e operando essas instâncias. É possível criar a hierarquia corporativa a seguir para gerenciar melhor as contas, as instâncias e o acesso de usuário:
- Use contas separadas e grupos de recursos distintos para gerenciar instâncias para os propósitos de desenvolvimento e produção.
- Designe aos usuários o acesso mínimo para os recursos correspondentes. Por exemplo, atribua aos gerentes corporativos a função de administrador para contas e gerenciamento de faturamento. Atribua aos membros da equipe desenvolvedora as funções de editor e de gerente para executar operações em direção à instância de desenvolvimento. Atribua a outros membros a função de visualizador e leitor para visualizar apenas recursos de instância.
O que vem a seguir
Os proprietários e administradores de conta podem convidar usuários e configurar políticas de serviço que correspondem às ações do Hyper Protect Crypto Services que os usuários podem executar. Para obter mais informações sobre como designar funções de usuário, consulte Gerenciando acesso a recursos.