

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á.

# Limitando o acesso a segredos
<a name="limiting-access"></a>

A segurança é a principal prioridade em AWS. No AWS Well-Architected Framework, [a melhor prática de armazenar e usar segredos](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_identities_secrets.html) com segurança recomenda que você limite o acesso aos segredos, registre e audite o acesso aos segredos e que obtenha acesso por meio de uma API em vez de conceder acesso a uma pessoa. Isso está relacionado à [geração de senhas aleatórias usando AWS Secrets Manager](generate-random-passwords.md), discutido anteriormente neste guia.

No passado, as credenciais usadas para autenticação em bancos de dados, terceiros APIs, tokens e outros segredos poderiam ter sido incorporadas ao código-fonte ou aos arquivos do ambiente. Em muitas organizações, os administradores de banco de dados ainda podem acessar todas as credenciais de usuário do banco de dados. No entanto, é mais seguro se não o fizerem. Recomendamos que você:
+ Limite o acesso ao Secrets Manager por meio de uma política AWS Identity and Access Management (IAM) anexada a uma [função de AWS serviço](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) ou a uma [função do IAM para usuários](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html).
+ Estenda o acesso programático aos segredos no Secrets Manager somente por meio de chamadas de API para o Secrets Manager.
+ Evite usar segredos codificados.
+ Não transmita valores de credenciais em variáveis.
+ Certifique-se de que os segredos sejam usados diretamente pelo aplicativo ou pela infraestrutura, e não por um usuário humano.

O exemplo de código a seguir mostra uma abordagem que você pode usar para proteger dados confidenciais ao criar um banco de dados. Ao criar o banco de dados, você pode exigir a entrada do usuário como senha e, em seguida, girar a senha, ou pode usar uma senha aleatória desde o início. Gerar uma senha aleatória desde o início pode ajudar você a lidar e gerenciar credenciais com mais segurança.

O trecho de código a seguir cria um recurso de banco de dados e `password = local.passwddata` busca a senha de uma variável local.

```
resource "aws_db_instance" "default" {
  count                  = var.createdb == true ? 1 : 0
  allocated_storage      = 20
  identifier             = var.identifier
  db_name                = var.databasename
  engine                 = "mysql"
  engine_version         = "8.0.32"
  instance_class         = "db.t3.micro"
  username               = "admin"
  password               = local.passwddata 
  skip_final_snapshot    = true
  publicly_accessible    = false
  vpc_security_group_ids = [aws_security_group.db.id]
  db_subnet_group_name   = aws_db_subnet_group.db.0.name
}
```

O trecho de código a seguir cria uma senha aleatória ou aceita a senha fornecida pelo usuário. Terraformarmazena essa senha como uma variável local para que você possa usá-la posteriormente no código.

```
locals {
  passwddata = var.passwddata != null ? var.passwddata : data.aws_secretsmanager_random_password.test.random_secrets
}
```