Performance Insights 用のアクセスポリシーの設定
Performance Insights にアクセスするには、プリンシパルが AWS Identity and Access Management (IAM) から適切な許可を得る必要があります。以下の方法でアクセス権を付与することができます。
-
AmazonRDSPerformanceInsightsReadOnly
管理ポリシーを、Performance Insights API のすべての読み取り専用操作にアクセスするためのアクセス許可セットまたはロールにアタッチします。 -
AmazonRDSPerformanceInsightsFullAccess
管理ポリシーを、Performance Insights API のすべての操作にアクセスするためのアクセス許可セットまたはロールにアタッチします。 -
カスタム IAM ポリシーを作成し、アクセス許可セットまたはロールにアタッチします。
また、Performance Insights を有効にしたときにカスタマーマネージドキーを指定した場合は、アカウント内のユーザーが KMS キーに対する kms:Decrypt
および kms:GenerateDataKey
許可を持っていることを確認します。
AmazonRDSPerformanceInsightsReadOnly ポリシーの IAM プリンシパルへのアタッチ
AmazonRDSPerformanceInsightsReadOnly
は Amazon RDS Performance Insights API のすべての読み取り専用オペレーションへのアクセス権限を付与する AWS マネージドポリシーです。
AmazonRDSPerformanceInsightsReadOnly
をアクセス許可セットまたはロールにアタッチすると、受取人は他のコンソール機能とともに Performance Insights を使用できます。
詳細については、「AWS マネージドポリシー: AmazonRDSPerformanceInsightsReadOnly」を参照してください。
AmazonRDSPerformanceInsightsFullAccess ポリシーを IAM プリンシパルにアタッチする
AmazonRDSPerformanceInsightsFullAccess
は Amazon RDS Performance Insights API のすべての操作へのアクセス権を付与する AWS 管理ポリシーです。
AmazonRDSPerformanceInsightsFullAccess
をアクセス許可セットまたはロールにアタッチすると、受取人は他のコンソール機能とともに Performance Insights を使用できます。
詳細については、「AWS 管理ポリシー: AmazonRDSPerformanceInsightsFullAccess」を参照してください。
Performance Insights 用のカスタム IAM ポリシーの作成
AmazonRDSPerformanceInsightsReadOnly
または AmazonRDSPerformanceInsightsFullAccess
ポリシーを持たないユーザーの場合、ユーザーマネージド IAM ポリシーを作成または変更することによって、Performance Insights へのアクセス権を付与できます。ポリシーを IAM アクセス許可セットまたはロールにアタッチすると、受取人は Performance Insights を使用できます。
カスタムポリシーを作成するには
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[ポリシー] を選択します。
-
[Create policy] (ポリシーの作成) を選択します。
-
[ポリシーの作成] ページで、[JSON] タブを選択します。
-
AmazonRDSPerformanceInsightsReadOnly または AmazonRDSPerformanceInsightsFullAccess ポリシーについて、「AWS 管理ポリシーリファレンスガイド」の「JSON ポリシードキュメント」セクションに記載されているテキストをコピーして貼り付けます。
-
[ポリシーの確認] を選択します。
-
ポリシーの名前と (必要に応じて) 説明を入力し、[ポリシーの作成] を選択します。
これで、そのポリシーをアクセス許可セットまたはロールにアタッチできます。次の手順では、この目的で使用できるユーザーが既に存在することを前提としています。
ポリシーをユーザーにアタッチするには
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで [ユーザー] を選択します。
-
リストから存在するユーザーを 1 人選択します。
重要
Performance Insights を使用するには、カスタムポリシーのほかに別のポリシーで、Amazon RDS へのアクセスを許可されている必要があります。例えば、
AmazonRDSPerformanceInsightsReadOnly
事前定義ポリシーで、ユーザーに Amazon RDS への読み取り専用アクセスを許可します。詳細については、「ポリシーを使用したアクセスの管理」を参照してください。 -
[Summary] ページで、[Add permissions] を選択します。
-
[既存のポリシーを直接アタッチする] を選択します。検索を行う場合は、次のようにポリシー名の初期の数文字を入力します。
-
ポリシーを選択し、[次へ: レビュー] を選択します。
-
[アクセス権限の追加] を選択します。
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 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). //Replaceregion
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 }