l'éditeur php Banana vous propose un article sur la bonne stratégie pour obtenir des secrets dans les applications Go locales. Dans le développement d’applications modernes, la protection de la sécurité des informations sensibles est cruciale. Cet article partagera quelques stratégies efficaces pour aider les développeurs à obtenir et à utiliser correctement des informations confidentielles dans les applications Go natives afin de garantir la confidentialité et l'intégrité des données. Qu'il s'agisse de mots de passe de base de données, de clés API ou d'autres informations sensibles, une gestion et un stockage appropriés sont essentiels pour assurer la sécurité de votre application. Voyons comment gérer les informations confidentielles en toute sécurité !
Jeu d'un petit projet sur AWS :
J'exécute l'application go localement pour vérifier l'interaction avec la base de données, mais je n'arrive pas à la faire fonctionner avec le gestionnaire de secrets.
Utilisez cet exemple de code :
func getcreds() { config, err := config.loaddefaultconfig(context.todo(), config.withregion(region)) if err != nil { log.fatal(err) } svc := secretsmanager.newfromconfig(config) input := &secretsmanager.getsecretvalueinput{ secretid: aws.string(secretname), versionstage: aws.string("awscurrent"), } result, err := svc.getsecretvalue(context.todo(), input) if err != nil { log.fatal(err.error()) } var secretstring string = *result.secretstring log.printf("pwd: %s", secretstring) }
Je comprends
operation error secrets manager: getsecretvalue, exceeded maximum number of attempts, 3, failed to sign request: failed to retrieve credentials: failed to refresh cached credentials, no ec2 imds role found, operation error ec2imds
Si je comprends bien, je dois ajouter des autorisations à l'utilisateur/à la stratégie. Mais où ajouter cela ? Dans la console IAM ? Ou la console du gestionnaire de secrets ?
Que devrait-il être ?
L'application{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Principal": {"AWS": "<what to add here>"}, "Resource": "<and here>" } ] }
go ne trouve pas les informations d'identification pour utiliser l'API AWS.
Selon (Configurer les informations d'identification), vous pouvez utiliser ce code pour utiliser automatiquement ~/.aws/config
comme informations d'identification locales
sess := session.must(session.newsessionwithoptions(session.options{ sharedconfigstate: session.sharedconfigenable, }))
Si vous fournissez une configuration personnalisée, vous devez fournir des informations d'identification. Il existe d'autres méthodes, choisissez celle qui vous convient. aws a proposé la méthode ci-dessus.
Cela inclut l'exécution avec vos utilisateurs. Pour l'exécution d'Aws, vous devez accorder à la fonction lambda l'accès à la clé :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", ], "Resource": [ "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes128-1a2b3c" ] } }
La stratégie ci-dessus doit être appliquée au rôle iam utilisé pour exécuter le lambda. Vous pouvez trouver les rôles aws console -> lambda -> votre lambda -> les autorisations d'exécution
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!