AWS Secrets Manager と RDS を使用してシークレットを管理するにはどうすればよいですか?

Aws Secrets Manager To Rds Wo Shi Yongshiteshikurettowo Guan Lisurunihadousurebayoidesuka



Amazon Relational Database は、複雑なクエリの操作と実行がより簡単かつシンプルなリレーショナル データベース サービスの 1 つです。 SQL クエリの構文に従い、AWS のこのサービスは従来のデータベースよりも高速で、アプリケーションの要件に基づいてデータベースを自動スケールします。 AWS RDS を使用すると、クエリを実行するためにハードウェアをカスタム セットアップしたり、ソフトウェアを構成したりする必要がなくなります。

この記事では、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 を使用してシークレットを管理するためのステップバイステップのガイドです。