Performance Insights 用の AWS KMS ポリシーの変更 - Amazon Aurora

Performance Insights 用の AWS KMS ポリシーの変更

Performance Insights は、AWS KMS key を使用して機密データを暗号化します。API またはコンソールを通じて Performance Insights を有効にする場合は、次のいずれかを実行します。

  • デフォルト AWS マネージドキー を選択します。

    Amazon RDS は、新しい DB インスタンスに AWS マネージドキー を使用します。Amazon RDS は、AWS アカウント に AWS マネージドキー を作成します。AWS アカウント には、AWS リージョン ごとに Amazon RDS の AWS マネージドキー が別々にあります。

  • カスタマーマネージドキーを選択します。

    カスタマーマネージドキーを指定する場合、Performance Insights API を呼び出すアカウント内のユーザーは、KMS キーに対する kms:Decrypt および kms:GenerateDataKey アクセス許可が必要です。IAM ポリシーを使用して、これらのアクセス許可を設定できます。ただし、KMS キーポリシーを使用してこれらのアクセス許可を管理することをお勧めします。詳細については、「AWS Key Management Service デベロッパーガイド」の「AWS KMS でのキーポリシー」を参照してください。

次の例では、KMS キーポリシーにステートメントを追加する方法を示します。これらのステートメントは、Performance Insights へのアクセスを許可します。KMS キーの使用方法によっては、いくつかの制限を変更することもできます。ポリシーにステートメントを追加する前に、すべてのコメントを削除してください。

{ "Version" : "2012-10-17", "Id" : "your-policy", "Statement" : [ { //This represents a statement that currently exists in your policy. } ...., //Starting here, add new statement to your policy for Performance Insights. //We recommend that you add one new statement for every RDS instance { "Sid" : "Allow viewing RDS Performance Insights", "Effect": "Allow", "Principal": { "AWS": [ //One or more principals allowed to access Performance Insights "arn:aws:iam::444455556666:role/Role1" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition" : { "StringEquals" : { //Restrict access to only RDS APIs (including Performance Insights). //Replace region with your AWS Region. //For example, specify us-west-2. "kms:ViaService" : "rds.region.amazonaws.com" }, "ForAnyValue:StringEquals": { //Restrict access to only data encrypted by Performance Insights. "kms:EncryptionContext:aws:pi:service": "rds", "kms:EncryptionContext:service": "pi", //Restrict access to a specific RDS instance. //The value is a DbiResourceId. "kms:EncryptionContext:aws:rds:db-id": "db-AAAAABBBBBCCCCDDDDDEEEEE" } } }

Performance Insights が AWS KMS カスタマー管理キーを使用する方法

Performance Insights は、カスタマー管理型のキー (CMK) を使用して機密データを暗号化します。Performance Insights を有効にすると、API を介して AWS KMS キーを提供できます。Performance Insights は、このキーの KMS 権限を作成します。キーを使用して、機密データを処理するために必要な操作を実行します。機密データには、ユーザー、データベース、アプリケーション、SQL クエリテキストなどのフィールドが含まれます。Performance Insights により、データは保存中も転送中も暗号化されたままになります。

Performance Insights IAM と AWS KMS の連携

IAM は特定の API にアクセス権限を付与します。Performance Insights には以下のパブリック API があり、IAM ポリシーを使用して制限できます。

  • DescribeDimensionKeys

  • GetDimensionKeyDetails

  • GetResourceMetadata

  • GetResourceMetrics

  • ListAvailableResourceDimensions

  • ListAvailableResourceMetrics

機密データを取得するには、以下の API リクエストを使用できます。

  • DescribeDimensionKeys

  • GetDimensionKeyDetails

  • GetResourceMetrics

API を使用して機密データを取得する場合、Performance Insights は呼び出し元の認証情報を利用します。このチェックにより、機密データへのアクセスが KMS キーにアクセスできるユーザーに限定されます。

これらの API を呼び出すときは、IAM ポリシーを通じて API を呼び出す権限と、AWS KMS キーポリシーを通じて kms:decrypt アクションを呼び出す権限が必要となります。

GetResourceMetrics API は、機密データと非機密データの両方を返すことができます。リクエストパラメータにより、レスポンスに機密データを含めるかどうかが決定されます。リクエストのフィルターパラメーターまたは group-by パラメーターのいずれかに機密ディメンションが含まれている場合、API は機密データを返します。

GetResourceMetrics API で使用できるディメンションの詳細については、DimensionGroup を参照してください。

次の例では、db.user グループの機密データをリクエストしています:

POST / HTTP/1.1 Host: <Hostname> Accept-Encoding: identity X-Amz-Target: PerformanceInsightsv20180227.GetResourceMetrics Content-Type: application/x-amz-json-1.1 User-Agent: <UserAgentString> X-Amz-Date: <Date> Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<Signature> Content-Length: <PayloadSizeBytes> { "ServiceType": "RDS", "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W", "MetricQueries": [ { "Metric": "db.load.avg", "GroupBy": { "Group": "db.user", "Limit": 2 } } ], "StartTime": 1693872000, "EndTime": 1694044800, "PeriodInSeconds": 86400 }

次の例では、db.load.avg メトリクスの非機密データをリクエストしています:

POST / HTTP/1.1 Host: <Hostname> Accept-Encoding: identity X-Amz-Target: PerformanceInsightsv20180227.GetResourceMetrics Content-Type: application/x-amz-json-1.1 User-Agent: <UserAgentString> X-Amz-Date: <Date> Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<Signature> Content-Length: <PayloadSizeBytes> { "ServiceType": "RDS", "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W", "MetricQueries": [ { "Metric": "db.load.avg" } ], "StartTime": 1693872000, "EndTime": 1694044800, "PeriodInSeconds": 86400 }