AWS Secrets Manager とは - AWS Secrets Manager

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

AWS Secrets Manager とは

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

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

Secrets Manager の開始方法

Secrets Manager を十分に活用するために理解しておく必要のある用語や概念のリストについては、「次の主な用語と概念: AWS Secrets Manager」を参照してください。

Secrets Manager の一般的なユーザーは、次のロールの 1 つ以上を持つことができます。

  • Secrets Manager 管理者 – Secrets Manager サービスを管理します。ここにリストされている他のロールを実行できる個人にアクセス権限を付与します。

  • データベースまたはサービス管理者 – シークレットが Secrets Manager に保存されているデータベースまたはサービスを管理します。シークレットのローテーションと有効期限の設定を決定して、設定します。

  • アプリケーション開発者 – アプリケーションを作成し、Secrets Manager から適切な認証情報を要求するようにアプリケーションを設定します。

ベーシック Secrets Manager シナリオ

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

  1. データベース管理者は、 MyCustomApp. また、管理者は、アプリケーションからパーソネル データベースにアクセスするために必要な権限を使用して、これらの資格情報を構成します。

  2. データベース管理者は、資格情報をシークレットとして Secrets Manager 名前付き MyCustomAppCreds. そして Secrets Manager は、認証情報を暗号化し、 保護された秘密テキスト.

  3. いつ MyCustomApp アプリケーションクエリがデータベースにアクセスし、 Secrets Manager という名前のシークレットの MyCustomAppCreds.

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

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

注記

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

Secrets Manager の機能

実行時に暗号化されたシークレット値をプログラムで取得

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

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

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

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

さまざまな種類の秘密の保存

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

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

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

  • シークレットに関連付けられている AWS KMS カスタマーマスターキー (CMK) の ARN。

  • アタッチされた AWS タグ

機密データの暗号化

Secrets Manager は、AWS Key Management Service (AWS KMS) を使用して、シークレットの保護テキストを暗号化します。多くの AWS サービスでは、キーストレージおよび暗号化に AWS KMS を使用します。AWS KMS は、保管時のシークレットの安全な暗号化を保証します。Secrets Manager はすべてのシークレットを AWS KMS CMK に関連付けます。Secrets Manager のアカウントのデフォルト CMK、または、お客様が作成した CMK のいずれかになります。

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

また、Secrets Manager はデフォルトで、オープン標準のトランスポート層セキュリティ (Transport Layer Security)パーフェクトフォワードシークレットを使用するホストからの要求のみを受け入れます。Secrets Manager は、シークレットの取得に使用する AWS とコンピュータ間での転送中にシークレットを確実に暗号化します。

自動的に秘密を回転

ユーザーの介入なしに、指定したスケジュールに基づいてシークレットを自動的に更新するよう Secrets Manager を設定できます。

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

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

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

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

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

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

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

完全に構成され、すぐに使用できる回転サポートを備えたデータベース

ローテーションを有効にする場合、Secrets Manager は次の Amazon Relational Database Service (Amazon RDS) データベースを AWS で書かれた、テスト済みの Lambda ローテーション関数テンプレート、およびローテーションプロセスの完全な設定でサポートしています。

  • 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 関数の記述の詳細については、「概要 Lambda 回転関数」を参照してください。

秘密へのアクセスを制御する

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

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

Secrets Manager へのアクセス

Secrets Manager は次のいずれかの方法で使用できます。

AWS マネジメントコンソール

ブラウザベースのコンソールを使用してシークレットを管理し、Secrets Manager コンソールを使用してシークレットに関連するほぼすべてのタスクを実行できます。

現時点では、コンソールで以下のタスクを実行することはできません。

  • ストアバイナリデータをシークレットに保存します。 コンソールは現在、シークレットの SecretString フィールドにのみデータを保存し、SecureBinary フィールドは使用しません。バイナリ データを格納するには、現在、 AWS CLI または AWS SDKs.

AWS コマンドラインツール

AWS コマンドラインツールを使用して、システムのコマンドラインでコマンドを発行することで、Secrets Manager およびその他の AWS タスクを実行できます。これは、コンソールを使用するよりも高速でより便利になります。コマンドラインツールは、AWS タスクを実行するスクリプトを作成する場合にも便利です。

AWS には、AWS Command Line Interface (AWS CLI) と AWS Tools for Windows PowerShell という 2 セットのコマンドラインツールが用意されています。AWS CLI のインストールおよび使用の詳細については、『AWS Command Line Interface ユーザーガイド』を参照してください。Tools for Windows PowerShell のインストールおよび使用の詳細については、『AWS Tools for Windows PowerShell ユーザーガイド』を参照してください。

AWS SDKs

AWSは SDKs は、さまざまなプログラミング言語とプラットフォーム用のライブラリとサンプルコードで構成されています。たとえば、 Java(Java)パイソンルビー.NET(.NET)iOSおよびAndroid、および その他. [ SDKs 要求の暗号化署名、エラーの管理、要求の自動再試行などのタスクが含まれます。AWSの詳細については、 SDKsのダウンロードとインストール方法などについては、を参照してください。 Amazon Web Services 用ツール.

Secrets Manager HTTPSクエリAPI

Secrets Manager HTTPS クエリ API を使用すると、Secrets Manager および AWS にプログラムでアクセスできます。HTTPS クエリ API を使用すると、サービスに HTTPS リクエストを直接発行できます。HTTPS API を使用する場合は、認証情報を使用してリクエストにデジタル署名するコードを含める必要があります。詳細については、「HTTP クエリリクエストを作成して API を呼び出す」および「AWS Secrets Manager API リファレンス」を参照してください。

注記

HTTPS クエリ API を使用する代わりに、望ましいプログラミング言語に固有の SDK を使用することをお勧めします。SDK は、手動で実行する多くの便利なタスクを実行します。[ SDKs 自動的に要求に署名し、応答を言語に適した構文に変換します。HTTPS Query API は、SDK が使用できない場合にのみ使用します。

Secrets Manager の料金

Secrets Manager を使用するときは、お客様が利用された分のみのお支払いとなり、最低料金や設定料金はありません。現在の価格の詳細なリストについては、「AWS Secrets Manager 料金表」を参照してください。

AWS KMS– 顧客の暗号化キー

AWS KMS を使用して自分のシークレットを暗号化する独自のお客様マスターキーを作成すると、AWS が現行の AWS KMS レートで課金されます。ただし、AWS Secrets Manager がアカウント用に作成する「デフォルト」キーは、無料で使用できます。お客様が作成する AWS KMS キーのコストの詳細については、「AWS Key Management Service 料金表」を参照してください。

AWS CloudTrail ロギング – 保存と通知

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