こんにちは、フルスタックエンジニアのryuです。
今回の記事では、AWSのSecretsManagerのについて解説します。SecretsManagerとは、データーベースの認証情報やAPIのキーなどのシークレット情報をAWS上に安全に管理するサービスです。今回は、AWSSecretsManagerの概要と使い方を解説します。
目次
【AWS】SecretsManagerとは?
AWS SecretsManagerって何?
今回の記事では、AWSのSecretsManagerについて解説します。
SecretsManager(シークレットマネージャ)とは、認証情報やAPIのキーを安全に管理するためのサービスです。SecretsManagerを使用することでセキュリティを向上させることができます。
SecretsManagerの概要と使い方について解説します。記事の内容は以下の通りです。
- SecretsManagerとは
- SecretsManagerのメリット
- SecretsManagerの使い方
では、解説します。
SecretsManagerとは機密情報を一元管理するサービス
まず、SecretsManagerの概要について説明します。
SecretsManagerとは機密情報を一元管理するサービスです。
SecretsManagerでは、データベースの認証情報やAPIのキーなど機密情報を管理します。つまり、SecretsManagerにパスワードを保存しておきます。
例えば、Webアプリとデータベースを連携するとき、Webアプリ内にデータベースの認証情報を保存しておきます。しかし、Webアプリに認証情報を保存しておくと、プログラマーから情報が漏洩する恐れがあります。
認証情報が漏洩しないように、パスワードをSecretsManagerに保存して、DBにアクセスするときに、認証情報をSecretsManagerから取得するようにします。このような流れでセキュリティを強化します。
SecretsManagerを利用するメリット
SecretsManagerを利用するメリットはこちらの5つです。
- シークレットを安全にローテート
- IAMポリシーできめ細かいアクセス管理
- シークレットを一元的に管理
- 従量課金
- シークレットを複数のリージョンに簡単にレプリケートする
メリットについては、こちらのドキュメントに書かれています。
AWS Secrets Manager(シークレットのローテーション、管理、取得)
SecretsManagerは、AWS上の様々なサービスと連携する場合に便利です。RDSなどの認証情報を自動的にローテートできます。認証情報を変更する際に、アプリケーション側の変更が不必要になります。
また、IAMを利用することで、SecretsManagerへのアクセス権限を管理することができます。IAMについては、こちらの記事をご覧下さい。
【AWS】IAMとは?IAMの概要や機能を分かりやすく解説!【初心者向け】
SecretsManagerの使い方とは
次にSecretsManagerの使い方について解説します。SecretsManagerにキーを登録してみましょう。
SecretsManagerにシークレットを保存
まず、AWSコンソールから「SecretsManager」と検索します。SecretsManagerのコンソールに移動したら「新しいシークレットを保存する」をクリックします。
そして、キーの種類を選択します。データベースの種類かAPIを選択します。
そして、APIのキーの値を入力します。完了したら、「次」をクリックします。
次の画面では、シークレットに名前を付けます。
SecretsManagerへのアクセス制御
次にSecretsManagerへのアクセス制御です。IAMロールを使用して、SecretsManagerへアクセスできるユーザーを制限します。
SecretManagerへフルアクセスする権限と、キーを取得する権限の2つを設定しました。自分の環境に合わせて適切に権限の設定をしましょう。
キーのローテーション
次に自動ローテーションの設定です。今回はAPIのキーのため自動ローテーションは無効に設定しています。すでにAPIキーを使っているときは無効にしておきましょう。
DBの認証情報など必要に応じてローテーションを設定しましょう。
これで、キーの保存は完了です!
SecretsManagerへキーを取得する方法
キーの保存の設定が完了すると、SecretsManagerへキーを取得する方法が表示されます。
各プログラムに応じて、サンプルコードをコピーしましょう。
ちなみに、私の環境ではCodebuildでAPIキーを取得する設定をおこないました。Codebuildのbuildspec.yml内では、以下のように設定しております。
env:
secrets-manager:
API_KEY: arn:aws:secretsmanager:ap-northest-1:XXXXXXXX:secret:apikey-XXXX:api-key
Codebuildの設定については、こちらの記事で解説しています。
【AWS】CodeBuildを使ってSPAアプリをS3で公開する方法解説!【初心者でも設定可能】
このように、SecretsManagerから安全にキーを取得できるようになります。
【AWS】SecretsManagerとは?まとめ
今回の記事では、SecretsManagerについて解説しました。まとめると以下のようになります。
- SecretsManagerでは、キーを一元管理する
- キーのローテーションや細かい権限管理が可能
- SecretsManagerで認証情報やAPIキーを保存する
SecretsManagerを活用することで、セキュリティを強化できるのでぜひ覚えておきましょう。
当ブログでは、AWSやAzureなどクラウド技術やインフラ技術を解説しています!興味のある方は是非ご覧ください。
さらにAWSについて学びたいという方は、こちらの講座がオススメです。初心者の方向けにAWSについて幅広く学ぶことが可能です。
AWS認定ソリューションアーキテクト アソシエイト試験突破講座 – 初心者向け20時間完全コース-
こちらの参考書もオススメです。