AWS Secrets Manager の開始方法
組織にはさまざまなタイプのシークレットがあります。ここでは、その一部と、AWS での保存場所を示します。
-
AWS 認証情報 – AWS Identity and Access Management
-
暗号化キー – AWS Key Management Service
-
SSH キー – Amazon EC2 Instance Connect
-
プライベートキーと証明書 – AWS Certificate Manager
-
データベースの認証情報 – Secrets Manager
-
アプリケーションの認証情報 – Secrets Manager
-
OAuth トークン – Secrets Manager
-
アプリケーションプログラムインターフェイス (API) キー – Secrets Manager
Secrets Manager の概念
以下の概念は、Secrets Manager の仕組みを理解するうえで重要です。
シークレット
Secrets Manager では、シークレットは、シークレット情報、シークレット値、およびシークレットに関するメタデータで構成されます。シークレット値には、文字列またはバイナリを使用できます。複数の文字列値をシークレットに保存するには、キーと値のペアを使用した JSON テキスト文字列を使用することをお勧めします。次に例を示します。
{ "host" : "ProdServer-01.databases.example.com", "port" : "8888", "username" : "administrator", "password" : "
EXAMPLE-PASSWORD
", "dbname" : "MyDatabase", "engine" : "mysql" }
シークレットのメタデータには以下が含まれます。
-
次の形式の Amazon リソースネーム (ARN)
arn:aws:secretsmanager:
<Region>
:<AccountId>
:secret:SecretName
-6RandomCharacters
-
シークレットの名前、説明、リソースポリシー、タグ
-
Secrets Manager がシークレット値を暗号化したり復号したりするために使用する AWS KMS key である暗号化キーの ARN Secrets Manager はシークレットテキストを常に暗号化された形式で保存し、転送中のシークレットを暗号化します。シークレット暗号化と復号 を参照してください。
-
シークレットをローテーションする方法に関する情報 (ローテーションを設定した場合) [Rotation] (ローテーション) を参照してください。
Secrets Manager は、IAM アクセス許可ポリシーを使用して、認証されたユーザーのみがシークレットにアクセスまたは変更できるようにします。AWS Secrets Manager の認証とアクセスコントロール を参照してください。
シークレットには、暗号化されたシークレット値のコピーを保持している複数のバージョンがあります。シークレットの値を変更するか、シークレットをローテーションすると、Secrets Manager は新しいバージョンを作成します。バージョン を参照してください。
シークレットをレプリケートすることによって、シークレットを複数の AWS リージョン で使用できます。シークレットをレプリケートする場合、元のシークレットをコピーするか、レプリカシークレットと呼ばれるプライマリシークレットを作成します。レプリカシークレットは、プライマリシークレットにリンクされたままになっています。「」を参照してくださいをレプリケートAWS Secrets Manager他への秘密AWS リージョン
「」を参照してくださいAWS Secrets Manager でのシークレットの作成と管理
[Rotation] (ローテーション)
ローテーションとは、定期的にシークレット情報を更新して、攻撃者が認証情報にアクセスするのをより困難にするプロセスです。Secrets Manager では、シークレットの自動ローテーションを設定できます。Secrets Manager がシークレットをローテーションすると、シークレットおよびデータベースまたはサービスの認証情報が更新されます。「AWS Secrets Managerシークレットのローテーション」を参照してください。
バージョン
シークレットには、暗号化されたシークレット値のコピーを保持している複数のバージョンがあります。シークレットの値を変更するか、シークレットをローテーションすると、Secrets Manager は新しいバージョンを作成します。シークレットには常にステージングラベル AWSCURRENT
を持つバージョンがあり、このバージョンが現在のシークレット値です。
ローテーション中、異なるバージョンのシークレットを指すために、Secrets Manager はステージングラベルを使用します。
-
AWSCURRENT
は、クライアントがアクティブに使用するバージョンを示します。シークレットは、かならずAWSCURRENT
バージョンを持っています。 -
AWSPENDING
は、ローテーションの完了時にAWSCURRENT
となるバージョンを示します。 -
AWSPREVIOUS
は最後の既知の有効なバージョン、つまり、1 つ前のAWSCURRENT
バージョンを示します。
Secrets Manager は、ステージングラベルを持たないバージョンを非推奨にし、その数が 100 を超える場合はそれらを削除します。ただし、Secrets Manager は 24 時間以内に作成されたバージョンは削除しません。
AWS CLI または AWS SDK を使用してシークレット値を取得する場合、シークレットのバージョンを指定することができます。バージョン ID またはステージングラベルのいずれかでバージョンを指定しない場合、Secrets Manager は AWSCURRENT
というステージングラベルがアタッチされたバージョンを指定します。
バージョンには、独自のステージングラベルをアタッチすることもできます。これにより、開発バージョンや本番バージョンを示すことなどが可能です。シークレットには、最大 20 のステージングラベルをアタッチできます。シークレットの 2 つのバージョンで同じステージングラベルを持つことはできません。