Key Management Service (KMS) は、アカウントパスワードやAccessKeyペアなどの秘密情報を保存できるシークレット管理機能を提供します。 Alibaba Cloud SDK、KMSインスタンスSDK、またはシークレットSDKをアプリケーションに統合すると、アプリケーションはKMSからシークレット情報を動的に取得できます。 これにより、平文の秘密情報による情報漏洩や不正操作のリスクを防ぐことができる。 このトピックでは、シナリオ、要素、回転など、シークレットに関する基本情報について説明します。
シークレット管理機能の利点
データベースやサーバーへのアクセスに使用されるアカウントのパスワード、SSHキー、AccessKeyペアなどの機密データの漏洩は、データセキュリティに対する主な脅威です。 データリークのリスクを減らすには、シークレットを効果的に保護し、定期的にローテーションする必要があります。 シークレット管理機能には、次の利点があります。
高セキュリティの暗号化アルゴリズムを使用して、シークレット値を暗号化および保存します。 これにより、ハードコードされた秘密による秘密や高価値資産の漏洩を防ぎ、データのセキュリティを向上させます。
安全で便利なアクセス方法を提供します。 このように、アプリケーションは、コードレスまたはローコード方式で秘密を使用することができる。
緊急対応機能を提供します。 秘密をすぐに交代させても、アプリケーションとサービスは影響を受けません。
説明この機能は、リソースアクセス管理 (RAM) シークレット、ApsaraDB RDSシークレット (デュアルアカウントモードの管理) 、およびシークレットSDKを使用してアプリケーションに統合されるElastic Compute Service (ECS) シークレットに対してのみサポートされます。
動的な秘密を高い頻度で回転させることができます。 これにより、回転ウィンドウが狭くなり、シークレットクラッキングのリスクが減少します。
API操作と、TerraformやResource orchestration Service (ROS) などのO&Mオーケストレーションツールを使用できます。 これは、集中型および大規模なセキュリティ管理の要件を満たします。
シナリオ
次のセクションでは、シークレットの基本的な管理シナリオと使用シナリオについて説明します。 次の例では、自己管理データベースのユーザー名とパスワードをKMSで管理します。
ApsaraDB RDSインスタンスを使用する場合は、ApsaraDB RDSシークレットを使用することを推奨します。 詳細については、「ApsaraDB RDSシークレットの管理と使用」をご参照ください。
セキュリティ管理者は、MyAppという名前のアプリケーションがデータベースにアクセスするために必要なユーザー名とパスワードを構成します。
セキュリティ管理者は、ユーザー名とパスワードを管理するために、KMSでMyDbCredsという名前のジェネリックシークレットを作成します。
MyAppがデータベースにアクセスする必要がある場合、MyAppはシークレットSDKを使用してKMSからMyDbCredsシークレットを取得します。
KMSは、暗号文のユーザー名とパスワードを読み取り、暗号文を復号化してから、HTTPSを介して平文をMyAppに返します。
MyAppは、KMSによって返された平文を読み取って解析し、ユーザー名とパスワードを取得します。 次に、MyAppはユーザー名とパスワードを使用してデータベースにアクセスします。
MyAppはKMSのAPIを呼び出して、ユーザー名とパスワードを取得します。 これにより、ハードコードされたシークレットによる機密データの漏洩を防ぎます。 次の図は、ハードコードされたシークレットとKMSで管理されるシークレットの違いを示しています。
秘密の要素
シークレットは、メタデータと1つ以上のシークレットバージョンで構成されます。 KMSコンソールにログインし、資格情報管理 ページでシークレットの詳細を表示できます。
メタデータ
シークレットのメタデータには、シークレット名、Alibaba Cloud Resource name (ARN) 、作成時刻、シークレットタイプ、暗号化キー、およびタグが含まれます。
重要暗号化キーは、秘密値の暗号化にのみ使用されます。 このキーは、シークレットのメタデータの暗号化には使用されません。 キーとシークレットは同じKMSインスタンスに属し、キーは対称キーである必要があります。
秘密のバージョン
シークレットは複数のバージョンを持つことができます。 各秘密バージョンは、バージョン番号、ステージラベル、及び秘密値を含む。
バージョン番号: 秘密値が格納されている場合にのみバージョン番号を生成できます。 バージョン番号はシークレット内で一意であり、変更できません。 バージョン番号は、複数のステージラベルに関連付けることができます。 各ステージラベルは、1つのバージョン番号のみに関連付けることができます。
ステージラベル: ステージラベルはシークレット内で一意です。 ステージラベルは、組み込みステージラベルとカスタムステージラベルの2つのカテゴリに分類されます。
作り付けの段階のラベル:
ACSCurrent: シークレットの現在のバージョン。最後に格納されたシークレット値のステータスです。
ACSPrevious: シークレットの以前のバージョン。
ACSPending: シークレットのローテーション中に生成されるシークレットの保留中のバージョン。 ローテーションが完了すると、バージョンが削除されます。
説明シークレット値を取得するために操作を呼び出すと、ステージラベルがACSCurrentであるシークレット値が読み取られます。
組み込みステージラベルはポインタとして機能します。 たとえば、シークレット値を初めて保存するときに、バージョン番号がv1として記録され、組み込みのステージラベルがACSCurrentになります。 その後、別の秘密値が格納される場合、その秘密値のバージョン番号はv2として記録され、v2の秘密値の組み込みステージラベルはACSCurrentとなり、v1の秘密値のステージラベルは自動的にACSPreviousに変更される。
カスタムステージラベル: シークレットバージョンごとに複数のカスタムステージラベルを設定できます。
Secret value: 格納された秘密情報。 値は文字列またはバイナリ値です。
説明シークレットのバージョン数が上限を超えると、ステージラベルのない最も古いバージョンが削除されます。
秘密の回転
ローテーションは、シークレットを新しいバージョンに定期的に更新する方法です。 これは、秘密のセキュリティを向上させるのに役立ちます。 新しいシークレットバージョンのステージラベルはACSCurrentに設定されています。 アプリケーションは、ステージラベルがACSCurrentであるシークレット値を動的に取得します。
回転プロセス
回転メソッド
自動ローテーション: ローテーション期間を指定すると、指定した期間が終了すると、KMSは自動的にローテーションを実行します。 RAMシークレット、ApsaraDB RDSシークレット、およびKMSのECSシークレットのローテーション期間を指定できます。 KMSのジェネリックシークレットにローテーション期間を指定することはできません。 Function Computeを使用すると、ジェネリックシークレットを定期的にローテーションできます。
即時ローテーション: 秘密が漏洩した場合、緊急対応としてすぐに秘密をローテーションできます。 RAMシークレット、ApsaraDB RDSシークレット、およびECSシークレットは、即時ローテーションをサポートしています。 ジェネリックシークレットをすぐにローテーションするには、シークレット値を格納する必要があります。
サポートされている秘密の種類
KMSは、ジェネリックシークレット、RAMシークレット、ApsaraDB RDSシークレット、ECSシークレットの4種類のシークレットをサポートしています。 次の表に、シークレットの種類を示します。
RAMシークレット、ApsaraDB RDSシークレット、およびECSシークレットは完全に管理されています。 KMSで完全に管理されている上記のタイプのシークレットについては、KMS内でシークレットのローテーションを実行できます。 シークレットのステータスの変更やシークレットの削除など、KMSの外部で実行される操作は、シークレットのローテーションを妨げ、KMSから取得されるシークレットの機能に影響を与えます。
シークレットのローテーションを管理する場合は、一般的なシークレットを使用できます。
秘密のタイプ | 説明 | 回転方法 | 関連ドキュメント |
一般的な秘密 | ジェネリックシークレットは、KMSを使用して管理できる基本的なシークレットです。 汎用シークレットを使用して、アカウント、AccessKeyペア、OAuthシークレットとトークン、APIキーなどの機密データを保存できます。 |
| |
RAMシークレット | RAMシークレットは、KMSでサポートされている完全マネージドシークレットです。 RAMシークレットを作成して、RAMユーザーのAccessKeyペアを保存できます。 |
| |
ApsaraDB RDSシークレット | ApsaraDB RDSシークレットは、KMSでサポートされている完全マネージド型シークレットです。 ApsaraDB RDSシークレットを作成して、ApsaraDB RDSインスタンスにデータベースのユーザー名とパスワードを保存できます。 |
| |
ECSシークレット | ECSシークレットは、KMSでサポートされている完全マネージドシークレットです。 ECSシークレットを作成して、ECSインスタンスへのログインに使用されるユーザー名とパスワードまたはSSHキーを保存できます。 |
|
課金
シークレットを使用する前に、KMSインスタンスを購入し、インスタンスの購入時にシークレットクォータを設定する必要があります。 KMSの課金の詳細については、「専用KMSの課金」をご参照ください。 KMSインスタンスの購入方法の詳細については、「KMSインスタンスの購入と有効化」をご参照ください。
アクセス制御と監査
Resource Access Management (RAM) を使用して、シークレットに対するアクセスおよび操作権限を制御し、シークレットのセキュリティを確保できます。 権限ポリシーの設定方法の詳細については、「カスタム権限ポリシー」をご参照ください。
ActionTrailを使用して、シークレットの作成、ローテーション、および取得を記録できます。 詳細については、「Query the usage records of keys and secrets」をご参照ください。