Segurança no AWS AppConfig - AWS AppConfig

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Segurança no AWS AppConfig

A segurança na nuvem na AWS é a nossa maior prioridade. Como cliente da AWS, você se beneficiará de um datacenter e de uma arquitetura de rede criados para atender aos requisitos das empresas com as maiores exigências de segurança.

A segurança é uma responsabilidade compartilhada entre a AWS e você. O modelo de responsabilidade compartilhadadescreve isso como a segurança da nuvem e segurança na nuvem:

  • Segurança da nuvem: AWS é responsável pela proteção da infraestrutura que executaAWS produtos da Nuvem AWS na AWS. A também fornece serviços que podem ser usados com segurança. Auditores de terceiros testam e verificam regularmente a eficácia da nossa segurança como parte dos AWSProgramas de conformidade. Para saber mais sobre os programas de conformidade que se aplicam ao AWS Systems Manager, consulte AWSServiços da em escopo por programa de conformidade.

  • Segurança na nuvem: sua responsabilidade é determinada pelo serviço da AWS que você usa. Você também é responsável por outros fatores, incluindo a confidencialidade de seus dados, os requisitos da empresa e as leis e regulamentos aplicáveis.

O AWS AppConfig é um recurso do AWS Systems Manager. Para entender como aplicar o modelo de responsabilidade compartilhada ao usar o AWS AppConfig, consulte Segurança em AWS Systems Manager. Essa seção descreve como configurar o Systems Manager para atingir os objetivos de segurança e conformidade do AWS AppConfig.

Implemente o acesso de privilégio mínimo

Como prática recomendada de segurança, conceda as permissões mínimas exigidas pelas identidades para realizar ações específicas em recursos específicos sob condições específicas. AWS AppConfig O agente oferece dois recursos que permitem que o agente acesse o sistema de arquivos de uma instância ou contêiner: backup e gravação em disco. Se você habilitar esses recursos, verifique se somente o AWS AppConfig Agente tem permissões para gravar nos arquivos de configuração designados no sistema de arquivos. Verifique também se somente os processos necessários para ler esses arquivos de configuração têm a capacidade de fazer isso. A implementação do acesso de privilégio mínimo é fundamental para reduzir o risco de segurança e o impacto que pode resultar de erros ou usuários mal-intencionados.

Para obter mais informações sobre a implementação do acesso com privilégios mínimos, consulte SEC03-BP02 Conceder acesso com privilégios mínimos no Guia do usuário. AWS Well-Architected Tool Para obter mais informações sobre os recursos do AWS AppConfig Agente mencionados nesta seção, consulteRecursos adicionais de recuperação.

Criptografia de dados em repouso no AWS AppConfig

O AWS AppConfig fornece criptografia por padrão para proteger os dados em repouso do cliente usando Chaves pertencentes à AWS.

Chaves pertencentes à AWS: o AWS AppConfig usa essas chaves por padrão para criptografar automaticamente os dados implantados pelo serviço e hospedados no armazenamento de dados do AWS AppConfig. Você não pode visualizar, gerenciar ou usar Chaves pertencentes à AWS, nem auditar seu uso. No entanto, você não precisa tomar nenhuma medida nem alterar nenhum programa para proteger as chaves que criptografam seus dados. Para obter mais informações, consulte Chaves pertencentes à AWS no AWS Key Management ServiceGuia do desenvolvedor.

Embora não seja possível desativar essa camada de criptografia nem selecionar um tipo alternativo de criptografia, você pode especificar uma chave gerenciada pelo cliente a ser usada ao salvar dados de configuração hospedados no armazenamento de dados do AWS AppConfig e ao implantar seus dados de configuração.

Chaves gerenciadas pelo cliente: o AWS AppConfig suporta o uso de uma chave simétrica gerenciada pelo cliente que você cria, possui e gerencia para adicionar uma segunda camada de criptografia sobre o Chave pertencente à AWS existente. Por ter controle total dessa camada de criptografia, você pode realizar tarefas como:

  • Estabelecer e manter as políticas e concessões de chaves

  • Estabelecer e manter políticas do IAM

  • Ativar e desativar políticas de chaves

  • Alternar os materiais de criptografia de chaves

  • Adicionar etiquetas

  • Criar aliases de chaves

  • Programar a exclusão de chaves

Para obter mais informações, consulte Chave gerenciada pelo cliente no Guia do desenvolvedor do AWS Key Management Service.

O AWS AppConfig suporta chaves gerenciadas pelo cliente

O AWS AppConfig oferece suporte para criptografia de chaves gerenciadas pelo cliente para dados de configuração. Para versões de configuração salvas no armazenamento de dados hospedado pelo AWS AppConfig, os clientes podem definir um KmsKeyIdentifier no perfil de configuração correspondente. Cada vez que uma nova versão de dados de configuração é criada usando a operação CreateHostedConfigurationVersion da API, o AWS AppConfig gera uma chave de dados AWS KMS a partir de KmsKeyIdentifier para criptografar os dados antes de armazená-los. Quando os dados são acessados posteriormente, seja durante as operações GetHostedConfigurationVersion ou StartDeployment da API, o AWS AppConfig descriptografa os dados de configuração usando informações sobre a chave de dados gerada.

O AWS AppConfig também oferece suporte para criptografia de chaves gerenciadas pelo cliente para dados de configuração implantados. Para criptografar os dados de configuração, os clientes podem fornecer um KmsKeyIdentifier para sua implantação. O AWS AppConfig gera a chave de dados AWS KMS com esse KmsKeyIdentifier para criptografar dados na operação StartDeployment da API.

Acesso à criptografia do AWS AppConfig

Ao criar uma chave gerenciada pelo cliente, siga esta política de chaves para garantir que a chave possa ser usada.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account_ID:role/role_name" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" } ]

Para criptografar dados de configuração hospedados com uma chave gerenciada pelo cliente, a chamada de identidade CreateHostedConfigurationVersion precisa da seguinte declaração de política, que pode ser atribuída a um usuário, grupo ou função:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:GenerateDataKey, "Resource": "arn:aws:kms:Region:account_ID:key_ID" } ] }

Se estiver usando um segredo do Secrets Manager ou qualquer outro dado de configuração criptografado com uma chave gerenciada pelo cliente, o retrievalRoleArn precisará de kms:Decrypt para descriptografar e recuperar os dados.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:Region:account_ID:configuration source/object" } ] }

Ao chamar a operação da AWS AppConfig StartDeploymentAPI, a chamada de identidade StartDeployment precisa da seguinte política do IAM, que pode ser atribuída a um usuário, grupo ou função:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:GenerateDataKey*" ], "Resource": "arn:aws:kms:Region:account_ID:key_ID" } ] }

Ao chamar a operação da AWS AppConfig GetLatestConfigurationAPI, a chamada de identidade GetLatestConfiguration precisa da seguinte política, que pode ser atribuída a um usuário, grupo ou função:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt, "Resource": "arn:aws:kms:Region:account_ID:key_ID" } ] }

Contexto de criptografia

Um contexto de criptografia é um conjunto opcional de pares chave-valor que contêm informações contextuais adicionais sobre os dados.

O AWS KMS usa o contexto de criptografia como dados autenticados adicionais para oferecer suporte à criptografia autenticada. Quando você inclui um contexto de criptografia em uma solicitação para criptografar dados, o AWS KMS vincula o contexto de criptografia aos dados criptografados. Para descriptografar os dados, você inclui o mesmo contexto de criptografia na solicitação.

Contexto de criptografia do AWS AppConfig: o AWS AppConfig usa um contexto de criptografia em todas as operações criptográficas de AWS KMS para dados de configuração hospedados criptografados e implantações. O contexto contém uma chave correspondente ao tipo de dados e um valor que identifica o dado específico.

Monitoramento das chaves de criptografia da AWS

Ao usar chaves gerenciadas pelo AWS KMS cliente comAWS AppConfig, você pode usar AWS CloudTrail o Amazon CloudWatch Logs para rastrear solicitações AWS AppConfig enviadas paraAWS KMS.

O exemplo a seguir é um CloudTrail evento Decrypt para monitorar AWS KMS operações chamadas por AWS AppConfig para acessar dados criptografados pela chave gerenciada pelo cliente:

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "appconfig.amazonaws.com" }, "eventTime": "2023-01-03T02:22:28z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "Region", "sourceIPAddress": "172.12.34.56", "userAgent": "ExampleDesktop/1.0 (V1; OS)", "requestParameters": { "encryptionContext": { "aws:appconfig:deployment:arn": "arn:aws:appconfig:Region:account_ID:application/application_ID/environment/environment_ID/deployment/deployment_ID" }, "keyId": "arn:aws:kms:Region:account_ID:key/key_ID", "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "account_ID", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:Region:account_ID:key_ID" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "account_ID", "sharedEventID": "dc129381-1d94-49bd-b522-f56a3482d088" }

Acesse o AWS AppConfig usando um VPC endpoint de interface (AWS PrivateLink)

É possível usar o AWS PrivateLink para criar uma conectividade privada entre a sua VPC e o AWS AppConfig. Você pode acessar o AWS AppConfig como se estivesse em sua VPC, sem usar um gateway da Internet, um dispositivo NAT, uma conexão VPN ou uma conexão AWS Direct Connect. As instâncias na sua VPC não precisam de endereços IP públicos para acessar AWS AppConfig.

Você estabelece essa conectividade privada criando um endpoint de interface, desenvolvido pelo AWS PrivateLink. Criaremos um endpoint de interface de rede em cada sub-rede que você habilitar para o endpoint de interface. Estas são interfaces de rede gerenciadas pelo solicitante que servem como ponto de entrada para o tráfego destinado ao AWS AppConfig.

Para obter mais informações, consulte Acessar os Serviços da AWS pelo AWS PrivateLink no Guia do AWS PrivateLink.

Considerações para o AWS AppConfig

Antes de configurar um endpoint de interface para AWS AppConfig, revise as Considerações no Guia AWS PrivateLink.

AWS AppConfigsuporta a realização de chamadas para os appconfigdataserviços appconfige por meio do endpoint da interface.

Criar um endpoint de interface para AWS AppConfig

Você pode criar um endpoint de interface para AWS AppConfig usando o console da Amazon VPC ou o AWS Command Line Interface (AWS CLI). Para obter mais informações, consulte Criando um Endpoint de InterfaceAWS PrivateLink no Guia.

Crie um endpoint para o AWS AppConfig usando o seguinte nome de serviço:

com.amazonaws.region.appconfig
com.amazonaws.region.appconfigdata

Se você habilitar o DNS privado para o endpoint da interface, poderá fazer solicitações de API a AWS AppConfig usando seu nome DNS regional padrão. Por exemplo, appconfig.us-east-1.amazonaws.com e appconfigdata.us-east-1.amazonaws.com.

Criar uma política de endpoint para o endpoint da interface

Política de endpoint é um recurso do IAM que você pode anexar ao endpoint de interface. A política de endpoint padrão permite acesso total ao AWS AppConfig por meio de endpoint de interface. Para controlar o acesso permitido ao AWS AppConfig pela VPC, anexe uma política de endpoint personalizada ao endpoint de interface.

Uma política de endpoint especifica as seguintes informações:

  • Os diretores que podem realizar ações (Contas da AWSusuários do IAM e funções do IAM).

  • As ações que podem ser executadas.

  • Os recursos nos quais as ações podem ser executadas.

Para obter mais informações, consulte Controlar o Acesso a Serviços Usando Políticas de Endpoint no AWS PrivateLink Guia.

Exemplo: política de endpoint da VPC para ações do AWS AppConfig

O exemplo a seguir refere-se a uma política de endpoint personalizada. Quando anexada ao endpoint da sua interface, essa política concede acesso às ações do AWS AppConfig listadas para todas as entidades principais em todos os recursos.

{ "Statement": [ { "Principal": "*", "Effect": "Allow", "Action": [ "appconfig:CreateApplication", "appconfig:CreateEnvironment", "appconfig:CreateConfigurationProfile", "appconfig:StartDeployment", "appconfig:GetLatestConfiguration" "appconfig:StartConfigurationSession" ], "Resource":"*" } ] }

Alternância de chaves do Secrets Manager

Esta seção descreve informações de segurança importantes sobre a integração do AWS AppConfig com o Secrets Manager. Para obter mais informações sobre o Secrets Manager, consulte O que é o AWS Secrets Manager? no Guia do usuário do AWS Secrets Manager.

Configuração da alternância automática dos segredos do Secrets Manager implantados pelo AWS AppConfig

Alternância é o processo de atualizar periodicamente um segredo armazenado no Secrets Manager. Quando o Secrets Manager alterna um segredo, ele atualiza as credenciais tanto no segredo quanto no banco de dados ou serviço. Você pode configurar a alternância automática de segredos no Secrets Manager usando uma função AWS Lambda para atualizar o segredo e o banco de dados. Para obter mais informações, consulte Alternar os segredos do AWS Secrets Manager no Guia do usuário do AWS Secrets Manager.

Para ativar a alternância de chaves de segredos do Secrets Manager implantados por AWS AppConfig, atualize sua função do Lambda para alternância e implante o segredo alternado.

nota

Implante seu perfil de configuração do AWS AppConfig depois que seu segredo for alternado e totalmente atualizado para a nova versão. Você pode determinar se o segredo foi alternado porque o status de VersionStage muda de AWSPENDING para AWSCURRENT. A conclusão da alternância de segredos ocorre dentro da função finish_secret dos modelos de alternância do Secrets Manager.

Veja um exemplo de função que inicia uma implantação do AWS AppConfig após a alternância de um segredo.

import time import boto3 client = boto3.client('appconfig') def finish_secret(service_client, arn, new_version): """Finish the rotation by marking the pending secret as current This method finishes the secret rotation by staging the secret staged AWSPENDING with the AWSCURRENT stage. Args: service_client (client): The secrets manager service client arn (string): The secret ARN or other identifier new_version (string): The new version to be associated with the secret """ # First describe the secret to get the current version metadata = service_client.describe_secret(SecretId=arn) current_version = None for version in metadata["VersionIdsToStages"]: if "AWSCURRENT" in metadata["VersionIdsToStages"][version]: if version == new_version: # The correct version is already marked as current, return logger.info("finishSecret: Version %s already marked as AWSCURRENT for %s" % (version, arn)) return current_version = version break # Finalize by staging the secret version current service_client.update_secret_version_stage(SecretId=arn, VersionStage="AWSCURRENT", MoveToVersionId=new_version, RemoveFromVersionId=current_version) # Deploy rotated secret response = client.start_deployment( ApplicationId='TestApp', EnvironmentId='TestEnvironment', DeploymentStrategyId='TestStrategy', ConfigurationProfileId='ConfigurationProfileId', ConfigurationVersion=new_version, KmsKeyIdentifier=key, Description='Deploy secret rotated at ' + str(time.time()) ) logger.info("finishSecret: Successfully set AWSCURRENT stage to version %s for secret %s." % (new_version, arn))