Key Management Service (KMS) は、アプリケーションアクセスポイント (AAP) を使用して、自己管理型アプリケーションが KMS インスタンス内のキーとシークレットを認証し、アクセスする方法を制御します。アプリケーションがキーまたはシークレットを使用する前に、AAP を介して認証する必要があります。
AAP には、権限ポリシーと認証情報の 2 つのコンポーネントが含まれています。
KMS にアクセスするアプリケーションごとに個別の AAP を作成します。これにより、各アプリケーションは独自のアクセス権限を持ち、個別に監査できます。
仕組み
各 AAP は、2 つの制御レイヤーを適用します。
権限ポリシー — アプリケーションがアクセスできるキーとシークレット、およびアクセス元の IP アドレスを定義します。
認証情報 — アクセスを許可する前に、アプリケーションの ID を認証します。
権限ポリシー
権限ポリシーは、アプリケーションがアクセスできる KMS リソースと、その条件を指定します。各 AAP は最大 3 つの権限ポリシーをサポートします。
各ポリシーには、以下が含まれます:
RBAC 権限 — アプリケーションが実行を許可されている操作
アクセス可能なリソース — アプリケーションがアクセスできるキーまたはシークレット
ネットワークアクセスルール — アクセスが許可されているソース IP アドレス
RBAC 権限
| ロール | 範囲 | サポートされている操作 |
|---|---|---|
| CryptoServiceKeyUser | KMS インスタンス内のキー | Instance API を介した暗号化操作。詳細については、「機能別操作一覧」をご参照ください。 |
| CryptoServiceSecretUser | KMS インスタンス内のシークレット | Instance API を介したシークレット関連操作。詳細については、「機能別操作一覧」をご参照ください。 |
| SecretUser | 現在の Alibaba Cloud アカウント内のすべてのシークレット | OpenAPI を介した GetSecretValue |
認証情報
認証情報は、KMS にアクセスするアプリケーションの ID を証明します。2 種類の認証情報タイプがサポートされています:クライアントキーと RAM ロール。
認証情報の種類の選択
| シナリオ | 認証情報の種類 |
|---|---|
| アプリケーションが KMS インスタンス内のキーまたはシークレットを使用するために ID および動作認証を必要とする | クライアントキー |
| アプリケーションが Elastic Compute Service (ECS)、Container Service for Kubernetes (ACK)、または Function Compute で実行され、Resource Access Management (RAM) ロールに関連付けられている | RAM ロール |
クライアントキー
クライアントキーは、アプリケーションから KMS へのリクエストに署名し、その署名を検証します。これは 2 つの部分で構成されます。
Application Access Secret(ClientKeyContent)
パスワード
ライフサイクル制限:
| プロパティ | 値 |
|---|---|
| デフォルトの有効期間 | 5 年 (1 年を推奨) |
| AAP あたりの最大クライアントキー数 | 3 |
| 保存 | KMS はクライアントキーを保存しません。クライアントキーを紛失した場合は、それを削除して新しいものを作成してください。 |
| 侵害対応 | 侵害されたキーを直ちに削除し、代替を作成してください。 |
クライアントキーの有効期限が切れる前にローテーションするには、詳細については、「クライアントキーの変更」をご参照ください。新しいキーに切り替えた後、古いキーを KMS から削除します。
RAM ロール
ご利用のアプリケーションが ECS、ACK、または Function Compute で実行され、すでに RAM ロールに関連付けられており、KMS エンドポイントを使用してシークレット値を取得する必要がある場合は、RAM ロールを使用します。KMS は RAM を使用して OpenAPI リクエストを認証します。クライアントキーは不要です。
クライアントキー認証をサポートする SDK
さまざまな KMS SDK は、異なる認証方式をサポートしています。詳細については、「SDK リファレンス」をご参照ください。
次の SDK はクライアントキー認証をサポートしています。
| SDK | アクセス範囲 | エンドポイントタイプ |
|---|---|---|
| KMS Instance SDK | KMS インスタンス内のキーとシークレット | KMS インスタンスエンドポイント (クライアントキーが必要) |
| Secret SDK | KMS インスタンス内のシークレット、または現在の Alibaba Cloud アカウント全体のシークレット | KMS インスタンスエンドポイントまたは KMS エンドポイント |
Secret SDK を KMS エンドポイントで使用する場合、クライアントキー、RAM ユーザーの AccessKey ペア、または RAM ロールで認証できます。エンドポイントタイプは、権限ポリシーの範囲をどのように構成するかによって異なります。KMS インスタンスを使用するには KMS インスタンスに設定し、KMS エンドポイントを使用するには Shared KMS Gateway に設定します。
クライアントキーの有効期限通知
Alibaba Cloud は、クライアントキーの有効期限が切れる 6 か月前、3 か月前、1 か月前、および 7 日前の間隔で、メールまたはサイト内メッセージで有効期限通知を送信します。
プロアクティブなアラートを設定するには、CloudMonitor を構成して、有効期限の 180 日前、90 日前、30 日前、および 7 日前に通知を送信します。詳細については、「アラートイベント」をご参照ください。
ログと監査
管理イベント
KMS は ActionTrail と統合されており、AAP の管理イベントを記録します。詳細については、「KMS の監査イベント」および「ActionTrail を使用して KMS イベントをクエリする」をご参照ください。
クライアントキー呼び出しログ
KMS は Simple Log Service (SLS) と統合されており、クライアントキーを使用して行われた呼び出しを記録します。ログは 180 日間保持され、KMS 用 Simple Log Service ページで検索可能です。特定のクライアントキーが使用されたかどうかを確認するには、kms_audit_log の下の検索ボックスにその ID を入力します。結果の access_key_id フィールドがクライアントキー ID と一致する場合、そのキーは呼び出されています。
次のステップ
詳細については、「AAP を使用して KMS インスタンスにアクセス」をご参照ください。— AAP を作成し、ご利用のアプリケーションと統合します。
詳細については、「SDK リファレンス」をご参照ください。— SDK を選択して統合します。
詳細については、「エンドポイントの説明」をご参照ください。— KMS インスタンスエンドポイントと KMS エンドポイントの違いを理解します。
詳細については、「パフォーマンスクォータ」をご参照ください。— QPS (クエリ/秒) 制限。