この記事では、AWS Secrets Manager と RDS を使用してシークレットを管理する方法を説明します。
シークレットマネージャーとは何ですか?
セキュリティ上の脅威とプライバシーに関する懸念も、世界中の専門家や人々によって提起されています。データベース認証情報、API、トークンなどのデジタル秘密を保護するには、AWS Secret Manager がこの目的のための頼りになるツールです。
AWS Secret Manager は、企業や組織が機密データをハイジャックまたは盗む悪意のある意図やサイバー攻撃からリソースやサービスを保護するのに役立ちます。このサービスにより、リソースに追加のセキュリティ層が追加され、シークレットの拡張と管理が容易になります。
AWS Secret Manager と RDS を使用してシークレットを管理するにはどうすればよいですか?
ユーザーが RDS クラスターを構成するときは常に、クラスターのリージョン、ユーザー名、およびパスワードに関する情報が必要であり、クラスターの一意の識別子を使用して識別されます。 RDS を Secret Manager と統合すると、RDS 認証情報を保護し、それに応じて管理できるようになります。
Secret Manager を使用すると、これらのシークレットのライフサイクルを定義し、他のリソースと統合できます。この記事では、Lambda 関数を備えた AWS Secret Manager を RDS クラスターに追加します。
この目的のためのいくつかの手順を以下に示します。
ステップ 1: RDS クラスターを作成する
Secret Manager は、データベースの資格情報を保護するために広く使用されています。したがって、最初のステップは RDS クラスターを作成することです。この目的については、次の記事を参照してください。 AWS で RDS クラスターを作成するにはどうすればよいですか? ”。 RDS クラスターが稼働しています。
ステップ 2: AWS シークレットマネージャー
AWS マネジメントコンソールで「」を検索して選択します。 秘密マネージャー ”:
Secret Manager インターフェイスで、 「新しい秘密を保存する」 ボタン:
の中に シークレットの種類 、 を選択 「Amazon RDS データベースの認証情報」 RDS 用に設定しているため、オプションを使用します。
次は、 資格 セクション。このセクションでは、 ユーザー名 そして パスワード 作成したばかりの RDS データベースの場合:
の中に 暗号化キー セクションでは、ユーザーは AWS Secret Manager によって提供されるデフォルトのものを使用するか、 「新しいキーを追加」 オプション。同様に、 データベース セクションで、 「DBインスタンス」 あなたが作成してヒットしたもの '次' ボタン:
一意の名前を付けます。 '秘密' それは後で識別するのに役立ちます。説明はオプションです。ただし、ユーザーはここでカスタムの説明を入力することもできます。
インターフェース上 、 Secret Manager は、シークレットを複製する機能も提供します。このためには、レプリケーションを作成するリージョンを選択します。このデモでは、レプリケーションは必要ないため、残りの設定をデフォルトのままにして、 '次' ボタン:
デフォルトのままで、情報を確認して編集します。入力内容をご確認の上、「 '店' ボタンをクリックしてシークレットを作成し、保存します。
ここでその秘密は、 正常に作成されました 。クリックしてください ' シークレットの名前 」を参照してその構成を表示します。
インターフェイスを下にスクロールすると、サンプル コード セクションがあります。このセクションでは、コードは シークレットマネージャー。 このコードはで使用されるのでコピーします。 ラムダ関数:
// このコード スニペットを使用してください で あなたのアプリ。// 必要な場合は もっと 設定やサンプルコードの実装に関する情報については、AWS ドキュメントを参照してください。
// https: // docs.aws.amazon.com / JavaScript用のSDK / v3 / 開発者ガイド / はじめに.html
輸入 {
シークレットマネージャークライアント、
GetSecretValueコマンド、
} から 「@aws-sdk/client-secrets-manager」 ;
const 秘密名 = 「mysecret1/sh」 ;
const client = 新しい SecretsManagerClient ( {
地域: 「ap-南東-1」 、
} ) ;
させて 応答;
試す {
応答 = クライアントの送信を待ちます (
新しい GetSecretValue コマンド ( {
SecretId: Secret_name、
バージョンステージ: 「AWSカレント」 、 // VersionStage のデフォルトは AWSCURRENT です もし 不特定
} )
) ;
} キャッチ ( エラー ) {
// スローされる例外のリストについては、を参照してください。
// https: // docs.aws.amazon.com / 秘密管理者 / 最新 / 願望参照 /
API_GetSecretValue.html
エラーをスローします。
}
const シークレット = 応答.SecretString;
// コードはここに入力します
ステップ 3: Lambda 関数を作成する
Lambda 関数インターフェイスで、「」をクリックします。 関数を作成する ' ボタン:
クリックしてください 「ゼロからの著者」 からのオプション 「関数を作成する」 インターフェース:
次に、に向かって進みます。 '基本情報' セクション。に関数名を入力します。 「関数名」 フィールドに入力し、 'ランタイム' 環境。ここで私たちが選択したのは、 「Node.js 16.x」 ランタイムフィールド:
クリックしてください 「関数の作成」 ボタン:
ここでは、によって生成されたコードを貼り付けました。 シークレットマネージャー 。コードを貼り付けた後、 '展開する' ボタン:
すべての変更を展開した後、 '構成' Secret Manager の権限を許可するタブ:
クリックしてください 「許可」 からのオプション 「構成」 タブ。これにより、「 実行役」 インターフェイスに移動し、その下の次のリンクをクリックします。 「役割名」 分野:
の中に 「権限ポリシー」 セクションで、 「権限を追加」 ボタン。ドロップダウン メニューから、 「ポリシーを添付する」 オプション:
の中に 「その他の権限ポリシー」 セクションで、検索して選択します 「SecretsManagerReadWrite」 オプション。ヒット 「権限を追加」 ボタン:
ここでは、ポリシーが正常にアタッチされ、構成されています。
ステップ 4: シークレット アクセスを確認する
次に、Lambda ダッシュボード インターフェイスに移動します。クリックしてください 'テスト' タブ:
次のインターフェイスで、テスト イベントの名前を指定します。 'イベント名' 分野。クリックしてください '保存' ボタンをクリックして構成を適用します。
これでテストは正常に構成されました。クリックしてください 'テスト' ボタン:
ここでは、 'テスト' ボタンをもう一度押すと、次の出力が表示されます。
このガイドの説明は以上です。
結論
Secret Manager でシークレットを管理するには、RDS クラスターを作成して Secret Manager にアタッチし、構成された Lambda 関数でそのコードを実行します。 Lambda 関数は、RDS クラスターの仕様を含むコードを実行することによって、シークレットにアクセスできるかどうかを定義します。この記事は、AWS Secret Manager と RDS を使用してシークレットを管理するためのステップバイステップのガイドです。