Protegendo o Serviço Resource Manager
Este tópico fornece informações de segurança e recomendações para o Resource Manager.
O Serviço Resource Manager permite automatizar o provisionamento de recursos do Oracle Cloud Infrastructure confirmando as instruções nos arquivos de configuração. Ao fazer isso, você garante que os recursos provisionados sigam as diretrizes de segurança da sua organização. Esses arquivos de configuração capturam as instruções de provisionamento passo a passo usando uma linguagem declarativa que segue o modelo "infraestrutura como código". As instruções de provisionamento são executadas como jobs.
Responsabilidades de Segurança
Para usar o Resource Manager com segurança, saiba mais sobre suas responsabilidades de segurança e conformidade.
A Oracle é responsável pelos seguintes requisitos de segurança:
- Segurança Física: A Oracle é responsável por proteger a infraestrutura global que executa todos os serviços oferecidos no Oracle Cloud Infrastructure. Essa infraestrutura consiste em hardware, software, redes e equipamentos que executam os serviços do Oracle Cloud Infrastructure.
Suas responsabilidades de segurança estão descritas nesta página, que incluem as seguintes áreas:
- Controle de Acesso: Limite os privilégios o máximo possível. Os usuários devem receber apenas o acesso necessário para executar seu trabalho.
- Confidencialidade: Limite o uso de dados confidenciais nos arquivos de configuração e saída
Tarefas iniciais de segurança
Use esta lista de verificação para identificar as tarefas que você executa para proteger o Resource Manager em uma nova tenancy do Oracle Cloud Infrastructure.
Tarefa | Mais Informações |
---|---|
Usar políticas de IAM para conceder acesso a usuários e recursos | Políticas do serviço IAM |
Tarefas de Segurança de Rotina
Depois de se familiarizar com o Resource Manager, use esta lista de verificação para identificar tarefas de segurança que recomendamos que você execute regularmente.
Tarefa | Mais Informações |
---|---|
Limitar o uso de informações confidenciais nos arquivos de configuração e saída | confidencialidade |
Execute uma auditoria de segurança | Auditando |
Políticas do Serviço IAM
Use políticas para limitar o acesso ao Resource Manager.
As políticas para gerenciar recursos do Oracle Cloud Infrastructure também são obrigatórias para operações do serviço Resource Manager que acessam recursos. Por exemplo, executando um job de aplicação em uma pilha que inclui instâncias e sub-redes do serviço Compute requer políticas que concedem permissões para esses tipos de recursos, nos compartimentos em que você deseja provisionar os recursos. Para ver exemplos de políticas para gerenciar recursos do Oracle Cloud Infrastructure, consulte Políticas Comuns.
Uma política especifica quem pode acessar os recursos do Oracle Cloud Infrastructure e como. Para obter mais informações, consulte Como as Políticas Funcionam.
Designe a um grupo o mínimo de privilégios necessários para executar suas responsabilidades. Cada política tem um verbo que descreve quais ações o grupo tem permissão para executar. Do menor acesso ao máximo, os verbos disponíveis são: inspect
, read
, use
e manage
.
Para obter mais informações sobre políticas do Resource Manager, consulte Detalhes do Resource Manager.
Gerenciar Pilhas e Jobs
Crie esta política para permitir que um grupo gerencie pilhas e jobs na tenancy, bem como gerencie recursos do Oracle Cloud Infrastructure nas pilhas da tenancy.
Allow group <group_name> to manage orm-stacks in tenancy
Allow group <group_name> to manage orm-jobs in tenancy
Crie esta política para impedir explicitamente que um grupo execute jobs de destruição.
Nesta instrução de política, você deve incluir a nova permissão em
read orm-jobs
porque a terceira instrução inclui uma condição que usa variáveis que não são relevantes para listar ou obter jobs. Allow group <group_name> to use orm-stacks in tenancy
Allow group <group_name> to read orm-jobs in tenancy
Allow group <group_name> to manage orm-jobs in tenancy where any {target.job.operation = 'PLAN', target.job.operation = 'APPLY'}
Para obter mais detalhes sobre permissões de pilha, consulte orm-stacks. Para obter mais detalhes sobre permissões de job, consulte orm-jobs.
Gerenciar Provedores de Origem de Configuração
Crie esta política para conceder a um grupo permissão para criar, atualizar, mover e excluir provedores de origem de configuração na tenancy.
Allow group <group_name> to manage orm-config-source-providers in tenancy
Crie essa política para conceder a um grupo permissão para criar pilhas de arquivos de configuração em sistemas de controle de código-fonte (usando provedores de origem de configuração existentes), além de gerenciar pilhas e jobs.
Allow group <group_name> to read orm-config-source-providers in tenancy
Allow group <group_name> to manage orm-stacks in tenancy
Allow group <group_name> to manage orm-jobs in tenancy
Para obter mais detalhes sobre permissões do provedor de origem de configuração, consulte orm-config-source-providers.
Gerenciar Modelos Privados
Crie esta política para conceder a um grupo permissão para criar, atualizar, mover e excluir modelos privados na tenancy.
Allow group <group_name> to manage orm-template in tenancy
Crie esta política para conceder a um grupo permissão para criar pilhas de modelos privados, além de gerenciar pilhas e jobs.
Allow group <group_name> to manage orm-stacks in tenancy
Allow group <group_name> to manage orm-jobs in tenancy
Allow group <group_name> to read orm-templates in tenancy
Para obter mais detalhes sobre permissões de modelos privados, consulte orm-templates.
Gerenciar Pontos Finais Privados
Crie esta política para conceder a um grupo permissão para criar, atualizar, mover e excluir pontos finais privados na tenancy, incluindo a capacidade de selecionar VCNs e sub-redes ao criar pontos finais privados.
Allow group <group_name> to manage orm-private-endpoints in tenancy
where any request.operation={'CreatePrivateEndpoint'}"
Allow group <group_name> to use virtual-network-family in tenancy
Para obter mais detalhes sobre permissões de ponto final privado, consulte orm-private-endpoints.
confidencialidade
Gerencie e controle o acesso a informações confidenciais no Resource Manager.
Arquivos de Estado do Terraform
O estado do Terraform (.tfstate
) pode conter dados confidenciais, incluindo IDs de recursos, senhas e chaves SSH. Use o serviço Vault para gerenciar e rotacionar credenciais de segredo que você usa com o Resource Manager.
Um vault inclui as chaves de criptografia e os segredos que você usa para proteger seus dados e estabelecer conexão com recursos protegidos. Os segredos são criptografados usando chaves mestras de criptografia e armazenam credenciais como senhas, certificados, chaves SSH ou tokens de autenticação. Antes de criar e usar segredos, crie um vault e uma chave de criptografia mestra se eles não existirem.
Por exemplo, você precisa de uma chave SSH para executar comandos e scripts remotos em uma instância de computação. Consulte Using Remote Exec.
Cada segredo recebe automaticamente uma versão de segredo. Ao rotacionar um segredo, você gera uma nova versão de segredo fornecendo novo conteúdo de segredo ao serviço Vault. A rotação periódica do conteúdo do segredo reduz o impacto no caso de um segredo ser exposto.
Para controlar o acesso ao arquivo de estado do Terraform, você pode criar uma política de segurança que limita o acesso à leitura de jobs, desta forma:
Allow group <group_name> to read orm-jobs in compartment
Qualquer usuário com a permissão ORM_JOB_READ
pode acessar arquivos de estados do Terraform.
Como a permissão
read orm-jobs
também afeta outras operações, como a obtenção de logs e configurações do Terraform, recomendamos a segregação de arquivos de estado em um compartimento no qual uma política restritiva não limite a capacidade de executar outras operações.Configurações do Terraform
O workflow do serviço Resource Manager geralmente inclui gravar ou gerar uma configuração do Terraform que é usada para gerenciar sua pilha. Como a configuração do Terraform pode ser acessada usando a API GetJobTfConfig
do Resource Manager, recomendamos que você não inclua informações confidenciais em seus arquivos de configuração.
Qualquer usuário com a permissão ORM_JOB_READ
pode acessar as configurações do Terraform.
Segurança de Rede
Proteja o acesso à rede para seus recursos no serviço Resource Manager, incluindo servidores Git privados e recursos de nuvem que você acessa no Resource Manager.
Em vez de expor recursos privados e o tráfego de rede correspondente ao público, use pontos finais privados para acesso remoto a esses recursos.
Use listas de segurança , grupos de segurança de rede ou uma combinação de ambos para controlar o tráfego no nível do pacote dentro e fora dos recursos da sua VCN (rede virtual na nuvem) . Consulte Acesso e Segurança.
Quando você configurar um grupo de segurança de rede (NSG) para uso com um ponto final privado, inclua as regras a seguir.
-
Regra de saída que permite tráfego para o recurso não público.
Exemplos de uma instância de computação não pública no endereço IP
192.168.227.87
:- Acesso mínimo:
192.168.227.87/32
- Acesso geral à VCN e ao CIDR da sub-rede:
192.168.0.0/16
- Acesso mínimo:
-
Regra de entrada que permite tráfego do ponto final privado.
Exemplos de uma instância de computação não pública no endereço IP
192.168.227.87
:- Acesso mínimo:
192.168.198.204/32
(Tipo de Origem: CIDR) - Acesso geral do CIDR da sub-rede:
192.168.0.0/16
- Acesso mínimo:
Quando você cria uma sub-rede em uma VCN, por padrão, a sub-rede é considerada pública e a comunicação com a internet é permitida. Use sub-redes privadas para hospedar recursos que não exigem acesso à Internet. Você também pode configurar um gateway de serviço na sua VCN para permitir que os recursos de uma sub-rede privada acessem outros serviços de nuvem. Consulte Opções de Conectividade.
Auditando
Localize logs de acesso e outros dados de segurança para o Resource Manager.
O serviço Audit registra automaticamente todas as chamadas de API para recursos do Oracle Cloud Infrastructure. Você pode atingir suas metas de segurança e conformidade usando o serviço Audit para monitorar todas as atividades do usuário em sua tenancy. Como todas as chamadas da Console, SDK e CLI (linha de comando) passam por nossas APIs, todas as atividades dessas origens são incluídas. Os registros de auditoria estão disponíveis por meio de uma API de consulta filtrável autenticada ou podem ser recuperados como arquivos batch do serviço Object Storage. O conteúdo do log de auditoria inclui a atividade ocorrida, o usuário que a iniciou, a data e a hora da solicitação, bem como o IP de origem, o agente do usuário e cabeçalhos HTTP da solicitação. Consulte Exibindo Eventos de Log de Auditoria.
Um log de auditoria para um evento CreateJob
{
"datetime": 1639092316856,
"logContent": {
"data": {
"additionalDetails": {
"X-Real-Port": 31720
},
"availabilityDomain": "AD1",
"compartmentId": "ocid1.tenancy.oc1..<unique_id>",
"compartmentName": "mytenancy",
"definedTags": null,
"eventGroupingId": "<unique_id>",
"eventName": "CreateJob",
"freeformTags": null,
"identity": {
"authType": "natv",
"callerId": null,
"callerName": null,
"consoleSessionId": "<unique_id>",
"credentials": "<key>",
"ipAddress": "<ip_address>",
"principalId": "ocid1.user.oc1..<unique_id>",
"principalName": "<user_name>",
"tenantId": "ocid1.tenancy.oc1..<unique_id>",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0"
},
"message": "apply-job-20211209152516 CreateJob succeeded",
"request": {
"action": "POST",
"headers": {
"Accept": [
"*/*"
],
"Accept-Encoding": [
"gzip, deflate, br"
],
"Accept-Language": [
"en"
],
"Authorization": [
"Signature keyId=\"<key>",version=\"1\",algorithm=\"rsa-sha256\",headers=\"(request-target) host content-length accept-language content-type opc-request-id x-content-sha256 x-date\",signature=\"*****\""
],
"Connection": [
"keep-alive"
],
"Content-Length": [
"207"
],
"Content-Type": [
"application/json"
],
"Origin": [
"https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com"
],
"Referer": [
"https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com/"
],
"Sec-Fetch-Dest": [
"empty"
],
"Sec-Fetch-Mode": [
"cors"
],
"Sec-Fetch-Site": [
"same-site"
],
"User-Agent": [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0"
],
"opc-request-id": [
"<unique_id>"
],
"x-content-sha256": [
"<key>"
],
"x-date": [
"Thu, 09 Dec 2021 23:25:16 GMT"
]
},
"id": "<unique_id>,
"parameters": {},
"path": "/20180917/jobs"
},
"resourceId": "ocid1.ormjob.oc1.phx.<unique_id>",
"response": {
"headers": {
"Access-Control-Allow-Credentials": [
"true"
],
"Access-Control-Allow-Origin": [
"https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com"
],
"Access-Control-Expose-Headers": [
"opc-previous-page,opc-next-page,opc-client-info,ETag,opc-total-items,opc-request-id,Location"
],
"Cache-Control": [
"no-cache, no-store, must-revalidate"
],
"Content-Length": [
"1135"
],
"Content-Type": [
"application/json"
],
"Date": [
"Thu, 09 Dec 2021 23:25:16 GMT"
],
"ETag": [
"<unique_id>"
],
"Pragma": [
"no-cache"
],
"Strict-Transport-Security": [
"max-age=31536000; includeSubDomains;"
],
"Timing-Allow-Origin": [
"https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com"
],
"Vary": [
"Origin"
],
"X-Content-Type-Options": [
"nosniff"
],
"X-XSS-Protection": [
"1; mode=block"
],
"opc-request-id": [
"<unique_id>"
]
},
"message": null,
"payload": {
"id": "ocid1.ormjob.oc1.phx.<unique_id>",
"resourceName": "apply-job-<unique_id>"
},
"responseTime": "2021-12-09T23:25:16.856Z",
"status": "200"
},
"stateChange": {
"current": {
"applyJobPlanResolution": {
"isAutoApproved": true
},
"cancellationDetails": {
"isForced": false
},
"compartmentId": "ocid1.tenancy.oc1..<unique_id>",
"configSource": {
"configSourceRecordType": "ZIP_UPLOAD"
},
"definedTags": {},
"displayName": "apply-job-<unique_id>",
"freeformTags": {},
"id": "ocid1.ormjob.oc1.phx.<unique_id>",
"jobOperationDetails": {
"executionPlanStrategy": "AUTO_APPROVED",
"operation": "APPLY"
},
"lifecycleState": "ACCEPTED",
"operation": "APPLY",
"stackId": "ocid1.ormstack.oc1.phx.<unique_id>",
"timeCreated": "2021-12-09T23:25:16.707Z",
"variables": {
"compartment_ocid": "ocid1.tenancy.oc1..<unique_id>",
"region": "us-phoenix-1",
"tenancy_ocid": "ocid1.tenancy.oc1..<unique_id>",
"wp_admin_password": "<example-password>",
"wp_admin_user": "<user_name>"
}
},
"previous": {}
}
},
"dataschema": "2.0",
"id": "<unique_id>",
"oracle": {
"compartmentid": "ocid1.tenancy.oc1..<unique_id>",
"ingestedtime": "2021-12-09T23:25:19.071Z",
"loggroupid": "_Audit",
"tenantid": "ocid1.tenancy.oc1..<unique_id>"
},
"source": "apply-job-<unique_id>",
"specversion": "1.0",
"time": "2021-12-09T23:25:16.856Z",
"type": "com.oraclecloud.OracleResourceManager.CreateJob.begin"
}
}