Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Limitare l'accesso ai segreti
La sicurezza è la massima priorità in AWS. Nel AWS Well-Architected Framework, la best practice Store and use secrets securely consiglia di limitare l'accesso ai segreti, registrare e controllare l'accesso ai segreti e di ottenere l'accesso tramite un'API anziché concedere l'accesso a una persona. Ciò è correlato alla generazione di password casuali mediante utilizzo AWS Secrets Manager, illustrata in precedenza in questa guida.
In passato, le credenziali utilizzate per l'autenticazione su database APIs, token di terze parti e altri segreti potevano essere incorporate nel codice sorgente o nei file di ambiente. In molte organizzazioni, gli amministratori dei database possono ancora accedere a tutte le credenziali utente del database. Tuttavia, è più sicuro se non lo fanno. Ti consigliamo di:
-
Limita l'accesso a Secrets Manager tramite una policy AWS Identity and Access Management (IAM) collegata a un ruolo di AWS servizio o a un ruolo IAM per gli utenti.
-
Estendi l'accesso programmatico ai segreti in Secrets Manager solo tramite chiamate API a Secrets Manager.
-
Evita di usare segreti codificati.
-
Non passate valori di credenziali nelle variabili.
-
Assicurati che i segreti vengano utilizzati direttamente dall'applicazione o dall'infrastruttura, anziché da un utente umano.
Il seguente esempio di codice mostra un approccio che è possibile utilizzare per proteggere i dati sensibili durante la creazione di un database. Quando si crea il database, è possibile richiedere l'immissione dell'utente come password e quindi ruotare la password, oppure è possibile utilizzare una password casuale dall'inizio. La generazione di una password casuale fin dall'inizio può aiutarvi a gestire e gestire le credenziali in modo più sicuro.
Il seguente frammento di codice crea una risorsa di database e password =
local.passwddata
recupera la password da una variabile locale.
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 }
Il seguente frammento di codice crea una password casuale o accetta la password fornita dall'utente. Terraformmemorizza questa password come variabile locale in modo da poterla utilizzare più avanti nel codice.
locals { passwddata = var.passwddata != null ? var.passwddata : data.aws_secretsmanager_random_password.test.random_secrets }