AWS Secrets Manager の概要 - AWS Secrets Manager

AWS Secrets Manager の概要

以前は、データベースから情報を取得するカスタムアプリケーションを作成したとき、通常、アプリケーション内でデータベースに直接アクセスするための認証情報 (シークレット) を埋め込んでいました。認証情報を更新するときには、単に新しい認証情報を作成する以上のことが必要でした。新しい認証情報を使用するために、アプリケーションを更新する時間を費やさなければなりませんでした。次に、更新されたアプリケーションを配布しました。認証情報を共有している複数のアプリケーションがあり、そのうちの 1 つを更新しなかった場合、アプリケーションは失敗しました。このリスクのために、多くのお客様は定期的に認証情報を更新せずに、実際のところは代わりに別のリスクを選択していました。

Secrets Manager では、コード内のハードコードされた認証情報 (パスワードを含む) を Secrets Manager への API コールに置き換えて、シークレットをプログラムで取得できます。これは、シークレットがコード内に存在しなくなったため、コードを調べる人によってシークレットが侵害されないようにするのに役立ちます。また、指定したスケジュールに従って自動的にシークレットをローテーションするように Secrets Manager を設定することもできます。これにより、長期のシークレットを短期のシークレットに置き換えることが可能となり、侵害されるリスクを大幅に減少させるのに役立ちます。

Secrets Manager を十分に活用するために理解しておく必要のある用語や概念のリストについては、AWS Secrets Manager の開始方法 を参照してください。

AWS Secrets Manager の基本シナリオ

この最も基本的なシナリオを以下に図で示します。この図表は、Secrets Manager のデータベースの認証情報を保存して、これらの認証情報をアプリケーションで使用してデータベースにアクセスできることを示しています。

  1. データベース管理者は、人事データベースに認証情報のセットを作成し、MyCustomApp という名前のアプリケーションで使用します。また、管理者は、アプリケーションが従業員データベースにアクセスするために必要なアクセス許可でこれらの認証情報を設定します。

  2. データベース管理者は、これらの認証情報を MyCustomAppCreds という名前の Secrets Manager にシークレットとして保存します。次に、Secrets Manager は認証情報をシークレット内で暗号化し、保護されたシークレットテキストとして保存します。

  3. MyCustomApp がデータベースにアクセスすると、アプリケーションは Secrets Manager に対して MyCustomAppCreds という名前のシークレットについてのクエリ 実行します。

  4. Secrets Manager はシークレットを取得して、保護されたシークレットテキストを復号し、そのシークレットを保護された (TLS を使用した HTTPS) チャネルを介してクライアントアプリケーションに返します。

  5. クライアントアプリケーションは、認証情報、接続文字列、およびその他の必要な情報をレスポンスから解析し、その情報を使用してデータベースサーバーにアクセスします。

注記

Secrets Manager は、多くのタイプのシークレットをサポートしています。ただし、Secrets Manager は、追加のプログラミングを必要とせずに、サポートされている AWS データベースの認証情報をネイティブにローテーションできます。ただし、他のデータベースまたはサービスのシークレットをローテーションするには、カスタム Lambda 関数を作成して、Secrets Manager がデータベースまたはサービスとどのようにやりとりするかを定義する必要があります。その関数を作成するには、プログラミングスキルが必要です。詳細については、「AWS Secrets Managerシークレットのローテーション」を参照してください。

AWS Secrets Manager の機能

ランタイムに暗号化されたシークレットの値をプログラムで取得する

Secrets Manager は、アプリケーションのソースコードからハードコードされた認証情報を削除して、アプリケーション内には認証情報を保存しないため、セキュリティ体制の改善に役立ちます。認証情報をアプリケーション内またはアプリケーションと共に保存すると、アプリケーションまたはそのコンポーネントを調べることができるすべてのユーザーに、その認証情報が漏洩する可能性があります。また、古い認証情報を廃止する前に、アプリケーションを更新してすべてのクライアントに変更をデプロイする必要があるため、認証情報の更新が困難になります。

Secrets Manager では、保存された認証情報を Secrets Manager ウェブサービスへのランタイム呼び出しに置き換えることができるため、必要に応じて認証情報を動的に取得できます。

ほとんどの場合、クライアントは暗号化されたシークレット値の最新バージョンにアクセスする必要があります。暗号化されたシークレット値をクエリするときは、バージョン情報をまったく指定せずにシークレット名またはその Amazon リソースネーム (ARN) だけを指定することができます。これを行うと、Secrets Manager は最新バージョンのシークレット値を自動的に返します。

ただし、他のバージョンも同時に存在する可能性があります。ほとんどのシステムは、接続の詳細、ユーザー ID、およびパスワードを含む認証情報の完全なセットなど、1 つの単純なパスワードよりも複雑なシークレットをサポートしています。Secrets Manager では、これらの認証情報の複数のセットを同時に保存することができます。Secrets Manager は、各セットを異なるバージョンのシークレットに保存します。シークレットのローテーションプロセス中、Secrets Manager はローテーションが完了するまで、古い認証情報とこれから使用を開始する新しい認証情報を追跡します。

さまざまなタイプのシークレットを保存する

Secrets Manager では、シークレットの暗号化されたシークレットデータ部分にテキストを保存できます。通常、このテキストはデータベースまたはサービスへの接続の詳細です。詳細には、サーバー名、IP アドレス、ポート番号、サービスにサインインするために使用されるユーザー名とパスワードが含まれます。シークレットについては、「最大値と最小値」を参照してください。保護されたテキストに以下の情報は含まれません。

  • シークレットの名前と説明

  • ローテーションまたは有効期限の設定

  • シークレットに関連付けられた KMS キーの ARN

  • アタッチされた AWS タグ

シークレットデータを暗号化する

Secrets Manager は、AWS Key Management Service (AWS KMS).を使用してシークレットの保護されたテキストを暗号化します。多くの AWS のサービスでは、キーの保存および暗号化に AWS KMS を使用します。AWS KMS により、シークレットは保管時に安全に暗号化されます。Secrets Manager は、すべてのシークレットを KMS キーに関連付けます。KMS キーとして、アカウント (aws/secretsmanager) のSecrets Manager の AWS マネージドキー、または AWS KMS で作成したカスタマーマネージド型キーのいずれかを使用できます。

Secrets Manager が保護されたシークレットデータの新しいバージョンを暗号化するたびに、Secrets Manager は、KMS キーから新しいデータキーを生成するように AWS KMS にリクエストします。Secrets Manager は、このデータキーをエンベロープ暗号化に使用します。Secrets Manager は、暗号化されたデータキーを、保護されたシークレットデータを使用して保存します。シークレットを復号する必要があるたびに、Secrets Manager はデータキーを復号するように AWS KMS にリクエストします。Secrets Manager はそれを保護されたシークレットデータを復号するために使用します。Secrets Manager では、データキーは暗号化されていない形式で保存されることはなく、データキーは常に使用後すぐに破棄されます。

さらに、Secrets Manager は、デフォルトでオープンスタンダードの Transport Layer Security (TLS)Perfect Forward Secrecy を使用するホストからのリクエストのみを受け入れます。Secrets Manager により、シークレットの所得に使用する AWS とコンピュータ間の転送中にシークレットが暗号化されます。

シークレットを自動的にローテーションする

ユーザーが操作しなくても、指定したスケジュールに従ってシークレットを自動的にローテーションするよう Secrets Manager を設定できます。

AWS Lambda 関数を使用して、ローテーションを定義し、実装します。この関数は、Secrets Manager が次のタスクを実行する方法を定義します。

  • これにより、シークレットの新しいバージョンが作成されます。

  • シークレットを Secrets Manager に保存します。

  • 新しいバージョンを使用するように保護されたサービスを構成します。

  • 新しいバージョンを確認します。

  • 新しいバージョンを本番準備完了としてマークします。

ステージングラベルは、シークレットの異なるバージョンを追跡するのに役立ちます。各バージョンには複数のステージングラベルをアタッチできますが、各ステージングラベルは 1 つのバージョンにのみアタッチできます。例えば、Secrets Manager によって、現在アクティブで使用中のシークレットのバージョンに AWSCURRENT というラベルが付けられます。現在のバージョンのシークレットを常にクエリするようアプリケーションを設定する必要があります。ローテーションプロセスで新しいバージョンのシークレットが作成されると、テストおよび検証が完了するまで、Secrets Manager によって、新しいバージョンに AWSPENDING というステージングラベルが自動的に付けられます。その後、Secrets Manager は AWSCURRENT というステージングラベルをこの新しいバージョンに追加します。アプリケーションは、次回の AWSCURRENT バージョンのクエリで、すぐに新しいシークレットの使用を開始します。

ローテーションが完全に設定されすぐに使用できる状態のデータベースをサポート

ローテーションを有効にすると、Secrets Manager は、AWS によって記述およびテストされた Lambda ローテーション関数テンプレートと完全に設定されたローテーションプロセスが含まれる以下の Amazon Relational Database Service (Amazon RDS) データベースをサポートします。

  • Amazon RDS 上の Amazon Aurora

  • Amazon RDS 上の MySQL

  • Amazon RDS 上の PostgreSQL

  • Amazon RDS 上の Oracle

  • Amazon RDS 上の MariaDB

  • Amazon RDS 上の Microsoft SQL Server

ローテーションが完全に設定されすぐに使用できる状態のその他のサービスをサポート

AWS によって記述およびテストされた Lambda ローテーション関数テンプレートと完全に設定されたローテーションプロセスをフルサポートする以下のサービスでも、ローテーションを有効にすることもできます。

  • Amazon DocumentDB

  • Amazon Redshift

ほとんどすべての他の種類のデータベースやサービスのシークレットを保存することもできます。ただし、自動的にシークレットをローテーションするには、カスタム Lambda ローテーション関数を作成して設定する必要があります。データベースまたはサービスのカスタム Lambda 関数の記述の詳細については、ローテーションの仕組み を参照してください。

シークレットへのアクセスの制御

特定のシークレットへのアクセスを許可または拒否するユーザー、グループ、およびロールに AWS Identity and Access Management (IAM) アクセス許可ポリシーをアタッチすると、それらのシークレットの管理を制限できます。例えば、メンバーがシークレットを完全に管理および設定する能力を必要とするグループに、1 つのポリシーをアタッチすることができます。アプリケーションによって使用されるロールにアタッチされる別のポリシーは、アプリケーションが実行する必要がある 1 つのシークレットに対する読み取りアクセス権限のみを許可する場合があります。

また、リソースベースのポリシーをシークレットに直接アタッチして、シークレット、およびバージョンの読み取りや変更を許可するユーザーを指定するアクセス許可を付与することもできます。(ユーザー、グループ、またはロールに自動的に適用される) アイデンティティベースのポリシーとは異なり、シークレットに関連付けられたリソースベースのポリシーは、Principal 要素を使用して、ポリシーの適用対象を識別します。Principal 要素には、同じアカウントからのユーザーやロールを、他のアカウントからのシークレットまたはプリンシパルとして含めることができます。

AWS Secrets Manager の標準への準拠

AWS Secrets Manager は、以下の標準について監査済みであり、コンプライアンスの認定を取得する必要がある場合にはソリューションの一部となります。

AWS は、医療保険の相互運用性と説明責任に関する法令 (HIPAA) コンプライアンスプログラムを拡張し、AWS Secrets ManagerHIPAA 対応サービスとして を含めています。AWS と事業提携契約 (BAA) を締結している場合は、Secrets Manager を使用して、HIPAA 準拠アプリケーションを構築できます。AWS は、AWS を活用してヘルス情報を処理および保存する方法を詳しく知りたいとお考えのお客様向けに、HIPAA に焦点を当てたホワイトペーパーを提供しています。詳細については、「HIPAA コンプライアンス」を参照してください。

AWS Secrets Manager は、クレジットカード業界 (PCI) のデータセキュリティ標準 (DSS) バージョン 3.2、サービスプロバイダーレベル 1 で準拠証明書を取得しています。AWS の製品やサービスを使用してカード所有者のデータを保存、処理、転送するユーザーは、各自の PCI DSS 準拠認定の管理に AWS Secrets Manager を使用できます。PCI DSS の詳細 (AWS PCI Compliance Package のコピーをリクエストする方法など) については、「PCI DSS レベル 1」を参照してください。

AWS Secrets Manager は、ISO/IEC 27001、ISO/IEC 27017、ISO/IEC 27018、および ISO 9001 のコンプライアンス認証を正常に取得しました。詳細については、「ISO 27001」、「ISO 27017」、「ISO 27018」、および「ISO 9001」を参照してください。

System and Organization Control (SOC) レポートとは、重要なコンプライアンスの統制および目標を Secrets Manager がどのように達成したかを実証する、サードパーティーによる独立した審査報告書です。このレポートの目的は、オペレーションとコンプライアンスをサポートするよう確立された AWS 統制を、ユーザーおよびユーザーの監査人が容易に把握できるようにすることです。詳細については、「SOC Compliance」(SOC コンプライアンス) を参照してください。

Federal Risk and Authorization Management Program (FedRAMP) は政府全体のプログラムであり、クラウドの製品やサービスに対するセキュリティ評価、認証、および継続的なモニタリングに関する標準化されたアプローチを提供しています。また、FedRAMP プログラムは、East/West と GovCloud のサービスおよびリージョン向けに、政府のデータや規制されたデータを消費するための暫定認証も提供します。詳細については、「 FedRAMP への準拠」を参照してください。

米国防総省 (DoD) クラウドコンピューティングセキュリティ要求事項ガイド (SRG) には、クラウドサービスプロバイダー (CSP) が DoD の暫定認証を取得して DoD ユーザーへのサービス提供を可能にする、標準化された評価と承認プロセスが規定されています。詳細については、DoD SRG リソースを参照してください。

オーストラリア政府のお客様は、情報セキュリティ登録評価プログラム (IRAP) を使用して、適切な制御が行われていることを検証し、オーストラリアサイバーセキュリティセンター (ACSC) が作成したオーストラリア政府情報セキュリティマニュアル (ISM) の要件に対応する適切な責任モデルを決定することができます。詳細については、IRAP リソースを参照してください。

Amazon Web Services (AWS) は、アウトソーシングサービスプロバイダーの監査レポート (OSPAR) の認証を取得しました。AWS は、シンガポール銀行協会 (ABS) のアウトソーシングサービスプロバイダーの統制目標と手順に関するガイドライン (ABSガイドライン) に準拠しています。このことは、シンガポールの金融サービス業界が定めるクラウドサービスプロバイダーに対する高い期待にも応えるという、AWS の取り組みをお客様に示すものとなっています。リソースの詳細については、OSPAR リソースを参照してください。

AWS Secrets Manager の料金

Secrets Manager では、使用した分のみ料金が発生し、最低料金や設定料金はありません。削除対象としてマークしたシークレットに対しては料金は発生しません。現在の価格の詳細なリストについては、「AWS Secrets Manager 料金表」を参照してください。

Secrets Manager が作成した AWS マネージドキー (aws/secretsmanager) を使用すると、無料でシークレットを暗号化できます。独自の KMS キーを作成してシークレットを暗号化すると、現在の AWS KMS レートが適用された AWS 料金が発生します。詳細については、AWS Key Management Service 料金表を参照してください。

自動ローテーションを有効にすると、Secrets Manager は AWS Lambda 関数を使用してシークレットをローテーションします。このローテーション関数は、現在の Lambda レートで課金されます。詳細については、「AWS Lambda 料金」を参照してください。

アカウントで AWS CloudTrail を有効にすると、Secrets Manager が送信する API コールのログを取得できます。Secrets Manager はすべてのイベントを管理イベントとして記録します。AWS CloudTrail はすべての管理イベントの最初のコピーを無料で保存します。ただし、通知を有効にすると、Amazon S3 のログストレージと Amazon SNS の料金が発生する場合があります。また、追加の証跡を設定している場合、管理イベントの追加コピーについては、料金が発生する可能性があります。詳細については、AWS CloudTrail 料金表を参照してください。

AWS Secrets Manager のサポートとフィードバック

ご意見をお待ちしております。awssecretsmanager-feedback@amazon.com にコメントを送信することができます。また、AWS Secrets Manager サポートフォーラムにフィードバックと質問を掲載することができます。AWS Support フォーラムの詳細については、「フォーラムヘルプ」を参照してください。

AWS Secrets Manager コンソールまたはコマンドラインツールの新しい機能をリクエストするには、awssecretsmanager-feedback@amazon.com に E メールを送信することをお勧めします。

ドキュメントのフィードバックを提供するには、各ウェブページの下部にあるフィードバックリンクを使用してください。直面している問題と、そのドキュメントが役に立たなかった理由について、具体的に記述してください。お客様が実際に見たものと、期待したものとがどのように異なっているかを教えてください。そのようなコメントは、私たちがドキュメントを改善するために何が必要であるかを理解するのに役立ちます。

ここでは、その他のリソースも使用できます。

  • AWS トレーニングカタログ – AWS スキルの向上と実践的な経験を積むためのロールベースの専門コースとセルフペースのラボです。

  • AWS デベロッパーツール – AWS を使用した革新的なアプリケーションの構築に役立つドキュメント、コード例、リリースノート、その他の情報を含むツールとリソースです。

  • AWS Support Center – AWS Support のケースを作成して管理するためのハブです。フォーラム、技術上のよくある質問、サービスのヘルスステータス、AWS Trusted Advisor など、その他の有用なリソースへのリンクも含まれています。

  • AWS Support – 1 対 1 の迅速な対応を行うサポートチャネルは、クラウド上のアプリケーションの構築と運用を支援します。

  • お問い合わせ – AWS 請求、アカウント、イベント、およびその他の問題に関するお問い合わせ先です。

  • AWS サイトの利用規約 – 当社の著作権、商標、お客様のアカウント、ライセンス、サイトへのアクセス、およびその他のトピックに関する詳細情報です。