助け合いフォーラム
適切なサービスはどれか。
正解
AWS Secrets Manager
解説
Secrets Managerには、シークレットを安全に管理するために、定期的にシークレットを更新する「ローテーション」機能があります。スケジュールに従って、Secrets Managerはローテーション用のLambda関数を自動的に呼び出します。アプリケーションは、更新されたシークレットでその後の認証を行います。
なお、Amazon RDS、Amazon Redshiftなど一部のサービスはSecrets Managerがローテーション用のテンプレートを用意しています。これら以外のサービス向けには、独自でローテーション関数を作成する必要があります。
以上より正解は
・AWS Secrets Manager
です。
ローテーションのタイミングは、日・週・月など任意に選択できます。
また、パラメータストア(Parameter Store)はAWS Systems Managerの機能で、複数のサービスのパスワードや運用データを一元管理します。Secrets Managerと同様に、シークレットを外部で管理する用途に利用できます。ただし、パラメータストアにはシークレットの自動ローテーション機能は存在しないため、セキュリティポリシーやシークレットを運用する際の要件に応じて使い分ける必要があります。
その他の選択肢については以下の通りです。
・AWS Systems Managerのパラメータストア
上述の通り、パラメータストアでは「定期的に認証情報が変更されるようにしたい」という要件を満たせませんので誤りです。
・AWS Key Management Service(KMS)
暗号化を行うサービス(S3やEBSなど)を安全に利用するための鍵を作成・管理するサービスですので誤りです。
・Amazon Cognito
モバイルアプリケーションやWebアプリケーション向けのユーザー認証機能を提供するサービスですので誤りです。
参考
通常、AWSリソースへアクセスするアプリケーションは、認証のために「アクセスキーとシークレットアクセスキー」を利用します。アクセスキーはAWSによって作成されるアクセスキーID(20桁の英数字)で、シークレットアクセスキーはアクセスキーと対になるものです。AWS CLIやAWS APIからAWSリソースにアクセスする際に使用します。
※詳細は、分野「IAM」を参照してください。
しかし、アプリケーションにアクセスキーやシークレットアクセスキーを書き込むのはセキュリティリスクが高くなります。認証情報をハードコーディング(埋め込み)することは、例えばアプリケーションのソースコードから認証情報を参照できてしまったり、認証情報を更新した際にアプリケーション側の更新漏れが発生するなどのリスクがあります。
AWS Secrets Managerは、データベースなどにアクセスする際のシークレット(ログイン時の認証情報など)を管理するサービスです。アプリケーションなどからAWSリソースへアクセスする際にSecrets Managerからシークレットを取得することにより、ログイン情報をアプリケーションにハードコーディングしたり平文で入力しておく必要がありません。
管理者はSecrets Managerを利用することにより、アプリケーションの安全な認証を実現できるようになります。
アプリケーションはSecrets ManagerのAPIを利用して、Secrets Managerに保存されたデータベースのシークレットを取得します。このとき、アプリケーション側には「secretsmanager:GetSecretValue」権限を付与する必要があります。
なお、Secrets Managerに管理されているシークレットは、KMS(Key Management Service)と連携することにより暗号化して保存することができます。
■シークレットのローテーション
Secrets Managerには、シークレットを安全に保存するための「ローテーション」機能があります。
ローテーションを有効にすると、Secrets Managerはスケジュールに基づいてLambda関数を内部的に呼び出し、シークレットを定期的に更新します。これにより、万一シークレットが漏洩してしまった際の被害を低減することができます。
シークレットが更新された後は、アプリケーションは更新されたシークレットでその後の認証を行います。
なお、Amazon RDS、Amazon Redshiftなど一部のサービスはSecrets Managerがローテーション用のテンプレートを用意しています。これら以外のサービス向けには、独自でローテーション関数を作成する必要があります。
キーローテーションについて(ACM/KMS)
ACMとKMSでのキーローテの違いがわかりません。
この問題含めいくつかの問題でキーローテについて問われているかと思います。(他:30482,30484)
私の今の認識は、両方のサービスでユーザー作成のカギを定期的に自動でローテーションしているイメージです。
Ping-tの問題だと、
30482では「Secrets Managerは自動的に鍵の更新を行う機能はありませんので誤りです。
なお、Secrets Managerとはシークレット(ログイン時の認証情報など)を管理するサービスです。KMSと連携することで、認証情報をより堅固に管理できるようになります。」
しかし30648の問題文を読むとACMがIDおよびパスワードをローテート出来ると読めてしまいました。
私自身実際にAWSのサービスを触ったことがないのでなかなか二つの差異をイメージできません。
初歩的な質問かもしれませんが、調べてもよくわからなかったので
ご教授宜しくお願いいたします。
ACM はAWS Certificate Manager の略称ですが、おそらくここでのACM はAWS Secrets Manager のことと推察します。なお、AWS Secrets Manager の略称はわかりませんでした(ASM と略している例は見つけられませんでした)。
私の今の認識は、両方のサービスでユーザー作成のカギを定期的に自動でローテーションしているイメージです。
私の認識では、AWS Secrets Manager はシークレット(ログイン時の認証情報など)の管理・ローテートができますが、ここでいうシークレットの中にカギは含まれません。KMS はシークレット(ログイン時の認証情報など)は扱えませんが、カギの管理・ローテートができます。
コメント
この投稿に対して返信しませんか?
y ysatoag
2022/11/15 14:35
誤字申し訳ありません、、、 解説ありがとうございます! 認証情報と鍵は別物なのですね