aws

【AWS】SecretsManagerとは?AWSでキーを一元管理する方法解説します

こんにちは、フルスタックエンジニアのryuです。

今回の記事では、AWSのSecretsManagerのについて解説します。SecretsManagerとは、データーベースの認証情報やAPIのキーなどのシークレット情報をAWS上に安全に管理するサービスです。今回は、AWSSecretsManagerの概要と使い方を解説します。

サーバー構築を実践で身につけるInfraAcademy

※本ページには、プロモーション・アフィリエイトリンクが含まれています

【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を利用するメリット

SecretsManagerを利用するメリットはこちらの5つです。

  • シークレットを安全にローテート
  • IAMポリシーできめ細かいアクセス管理
  • シークレットを一元的に管理
  • 従量課金
  • シークレットを複数のリージョンに簡単にレプリケートする

メリットについては、こちらのドキュメントに書かれています。

AWS Secrets Manager(シークレットのローテーション、管理、取得)

SecretsManagerは、AWS上の様々なサービスと連携する場合に便利です。RDSなどの認証情報を自動的にローテートできます。認証情報を変更する際に、アプリケーション側の変更が不必要になります。

また、IAMを利用することで、SecretsManagerへのアクセス権限を管理することができます。IAMについては、こちらの記事をご覧下さい。

【AWS】IAMとは?IAMの概要や機能を分かりやすく解説!【初心者向け】

SecretsManagerの使い方とは

次にSecretsManagerの使い方について解説します。SecretsManagerにキーを登録してみましょう。

SecretsManagerにシークレットを保存

まず、AWSコンソールから「SecretsManager」と検索します。SecretsManagerのコンソールに移動したら「新しいシークレットを保存する」をクリックします。

SecretsManagerのコンソール

そして、キーの種類を選択します。データベースの種類かAPIを選択します。

SecretsManagerで保存するキーの種類

そして、APIのキーの値を入力します。完了したら、「次」をクリックします。

キーを入力

次の画面では、シークレットに名前を付けます。

キーの名前

SecretsManagerへのアクセス制御

次にSecretsManagerへのアクセス制御です。IAMロールを使用して、SecretsManagerへアクセスできるユーザーを制限します。

SecretsManagerでの権限設定

SecretManagerへフルアクセスする権限と、キーを取得する権限の2つを設定しました。自分の環境に合わせて適切に権限の設定をしましょう。

キーのローテーション

次に自動ローテーションの設定です。今回はAPIのキーのため自動ローテーションは無効に設定しています。すでにAPIキーを使っているときは無効にしておきましょう。

SecretsManagerでキーの保存

DBの認証情報など必要に応じてローテーションを設定しましょう。

これで、キーの保存は完了です!

SecretsManagerへキーを取得する方法

キーの保存の設定が完了すると、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時間完全コース-

こちらの参考書もオススメです。

ABOUT ME
ryu@InfraAcademyというインフラ学習サービス運営
大手企業→上場ベンチャー→スタートアップでエンジニアをしていました。 インフラエンジニア歴10年以上。 Linuxやネットワークの学習ができるサービスInfraAcademyを運営中。
RELATED POST