

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 em AWS AppConfig
<a name="appconfig-security"></a>

A segurança na nuvem AWS é a maior prioridade. Como AWS cliente, você se beneficia de um data center e de uma arquitetura de rede criados para atender aos requisitos das organizações mais sensíveis à segurança.

A segurança é uma responsabilidade compartilhada entre você AWS e você. O [modelo de responsabilidade compartilhada](https://aws.amazon.com/compliance/shared-responsibility-model/) descreve isso como segurança *da* nuvem e segurança *na* nuvem:
+ **Segurança da nuvem** — AWS é responsável por proteger a infraestrutura que executa AWS os serviços no Nuvem AWS. AWS também fornece serviços que você pode usar com segurança. Auditores terceirizados testam e verificam regularmente a eficácia de nossa segurança como parte dos Programas de Conformidade Programas de [AWS](https://aws.amazon.com/compliance/programs/) de . Para saber mais sobre os programas de conformidade aplicáveis AWS Systems Manager, consulte [AWS Serviços no escopo do programa de conformidade AWS](https://aws.amazon.com/compliance/services-in-scope/) .
+ **Segurança na nuvem** — Sua responsabilidade é determinada pelo AWS serviço 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. 

AWS AppConfig é uma ferramenta em AWS Systems Manager. Para entender como aplicar o modelo de responsabilidade compartilhada ao usar AWS AppConfig, consulte [Segurança em AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/security.html). 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
<a name="appconfig-security-least-privilege-access"></a>

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 privilégio de acesso 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 como implementar o acesso com privilégios mínimos, consulte [SEC03- BP02 Conceder acesso com privilégios mínimos](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_permissions_least_privileges.html) no Guia do *AWS Well-Architected Tool Usuário*. Para obter mais informações sobre os recursos do AWS AppConfig Agente mencionados nesta seção, consulte[Usar um manifesto para habilitar recursos de recuperação adicionais](appconfig-agent-how-to-use-additional-features.md).

## Criptografia de dados em repouso para AWS AppConfig
<a name="appconfig-security-data-encryption"></a>

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

**Chaves pertencentes à AWS**— AWS AppConfig usa essas chaves por padrão para criptografar automaticamente os dados implantados pelo serviço e AWS AppConfig hospedados no armazenamento de dados. Você não pode visualizar, gerenciar Chaves pertencentes à AWS, usar ou auditar seu uso. No entanto, não é necessário realizar nenhuma ação nem alterar qualquer programa para proteger as chaves que criptografam seus dados. Para saber mais, consulte [Chaves pertencentes à AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) no *Guia do desenvolvedor do AWS Key Management Service *.

Embora não seja possível desativar essa camada de criptografia ou 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 AWS AppConfig dados e ao implantar seus dados de configuração.

**Chaves gerenciadas pelo cliente** — 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 a existente Chave pertencente à AWS. 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 chave
+ Adicionar etiquetas
+ Criar réplicas de chaves
+ Programar chaves para exclusão

Para obter mais informações, consulte [Chave gerenciada pelo cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) no *Guia do desenvolvedor do AWS Key Management Service *.

**AWS AppConfig suporta chaves gerenciadas pelo cliente**

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

AWS AppConfig também oferece suporte para criptografia de chave gerenciada 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. AWS AppConfig gera a chave AWS KMS de dados com isso `KmsKeyIdentifier` para criptografar dados na operação da `StartDeployment` API.

**AWS AppConfig acesso à criptografia**

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

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333: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:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kms:GenerateDataKey",
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/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. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "kms:Decrypt",
      "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-ID"
    }
  ]
}
```

------

Ao chamar a operação da AWS AppConfig [StartDeployment](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_appconfigdata_StartDeployment.html)API, 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:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:GenerateDataKey*"
      ],
      "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-ID"
    }
  ]
}
```

------

Ao chamar a operação da AWS AppConfig [GetLatestConfiguration](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_appconfigdata_GetLatestConfiguration.html)API, a chamada de identidade `GetLatestConfiguration` precisa da seguinte política, que pode ser atribuída a um usuário, grupo ou função:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kms:Decrypt",
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-ID"
        }
    ]
}
```

------

**Contexto de criptografia**

Um [contexto de criptografia](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) é um conjunto opcional de pares chave-valor que pode conter informações contextuais adicionais sobre os dados.

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, AWS KMS vincula o contexto de criptografia aos dados criptografados. Para descriptografar os dados, você inclui o mesmo contexto de criptografia na solicitação.

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

**Monitorando suas chaves de criptografia para AWS**

Ao usar chaves gerenciadas pelo AWS KMS cliente com AWS AppConfig, você pode usar AWS CloudTrail o Amazon CloudWatch Logs para rastrear solicitações AWS AppConfig enviadas para AWS 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"
}
```

## Acesso AWS AppConfig usando um endpoint de interface ()AWS PrivateLink
<a name="vpc-interface-endpoints"></a>

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

Estabeleça essa conectividade privada criando um *endpoint de interface*, habilitado 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 saber mais, consulte [Acessar os Serviços da AWS pelo AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html) no *Guia do AWS PrivateLink *.

### Considerações para AWS AppConfig
<a name="vpc-endpoint-considerations"></a>

*Antes de configurar um endpoint de interface para AWS AppConfig, consulte [as Considerações](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#considerations-interface-endpoints) no AWS PrivateLink Guia.*

AWS AppConfig suporta a realização de chamadas para os [https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_Operations_AWS_AppConfig_Data.html](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_Operations_AWS_AppConfig_Data.html)serviços [https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_Operations_Amazon_AppConfig.html](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_Operations_Amazon_AppConfig.html)e por meio do endpoint da interface.

### Crie um endpoint de interface para AWS AppConfig
<a name="vpc-endpoint-create"></a>

Você pode criar um endpoint de interface para AWS AppConfig usar o console Amazon VPC ou AWS Command Line Interface o AWS CLI(). Para obter mais informações, consulte [Criar um endpoint de interface](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) no *Guia do usuário do AWS PrivateLink *.

Crie um endpoint de interface para AWS AppConfig usar os seguintes nomes 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 de interface
<a name="vpc-endpoint-policy"></a>

Uma política de endpoint é um recurso do IAM que pode ser anexado ao endpoint de interface. A política de endpoint padrão permite acesso total AWS AppConfig por meio do endpoint da interface. Para controlar o acesso AWS AppConfig permitido pela sua VPC, anexe uma política de endpoint personalizada ao endpoint da interface.

Uma política de endpoint especifica as seguintes informações:
+ As entidades principais que podem realizar ações (Contas da AWS, usuários do IAM e perfis do IAM).
+ As ações que podem ser realizadas.
+ Os recursos nos quais as ações podem ser executadas.

Para obter mais informações, consulte [Controlar o acesso aos serviços usando políticas de endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) no *Guia do AWS PrivateLink *.

**Exemplo: política de VPC endpoint para ações 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
<a name="appconfig-security-secrets-manager-key-rotation"></a>

Esta seção descreve informações de segurança importantes sobre a AWS AppConfig integração com o Secrets Manager. Para obter informações sobre o Secrets Manager, consulte [O que é AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) no *Guia do AWS Secrets Manager usuário*.

### Configurando a rotação automática dos segredos do Secrets Manager implantados pelo AWS AppConfig
<a name="appconfig-security-secrets-manager-key-rotation-setting-up"></a>

*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 rotação automática de segredos no Secrets Manager usando uma AWS Lambda função para atualizar o segredo e o banco de dados. Para obter mais informações, consulte [Alternar os segredos do AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html) no *Guia do usuário do AWS Secrets Manager *.

Para ativar a rotação de chaves dos segredos do Secrets Manager implantados por AWS AppConfig, atualize sua função de rotação do Lambda e implante o segredo rotacionado.

**nota**  
Implante seu perfil de AWS AppConfig configuração depois que seu segredo for alterado 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.

Aqui está um exemplo de função que inicia uma AWS AppConfig implantação após a rotação 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))
```