💨

【パスワード管理】aws secrets manager

2024/05/04に公開

背景

秘匿性の高いものをソースコードに入れたくない。そういった要件があると思います。
今回は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