💨
【パスワード管理】aws secrets manager
こんにちは投資ロウトです。
背景
秘匿性の高いものをソースコードに入れたくない。そういった要件があると思います。
今回はaws secrets managerの仕組みを導入していきます。
まずはデータを登録
・key valueでデータを設定する
わかりやすいように英数字で名前をつける
・特に何も変更しない
特に変更せずに保存する
NestJSで実際に取得
// aws secrets managerよりメール送信用の情報を取得する
const secretsManager = new SecretsManager({
region: 'リージョン名',
});
try {
const data = await secretsManager
.getSecretValue({
SecretId: 'シークレット名もしくはARN',
})
.promise();
if (data.SecretString) {
return JSON.parse(data.SecretString);
} else if (data.SecretBinary) {
// SecretBinaryがBufferの場合、UTF-8でデコード
let decodedString = (data.SecretBinary as Buffer).toString('utf-8');
return JSON.parse(decodedString);
}
} catch (error) {
// 何かしら例外の処理
}
AWSのIAMユーザーにロールが必要
「secretsmanager:GetSecretValue」という権限を対象の開発ユーザーに付与する必要がありました
まとめ
上記を実装すると、シークレットマネージャーから値が取得できました。
Discussion