本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定績效詳情的存取政策
若要存取 Performance Insights,主體必須具有 AWS Identity and Access Management (IAM) 的適當許可。您可透過以下方式授予存取權:
-
將
AmazonRDSPerformanceInsightsReadOnly
受管政策附加至許可設定或角色,以存取 Performance Insights API 的僅供讀取操作。 -
將
AmazonRDSPerformanceInsightsFullAccess
受管政策附加至許可設定或角色,以存取 Performance Insights API 的所有操作。 -
建立自訂 IAM 政策,並將其連接至許可集或角色。
如果您在開啟 Performance Insights 時指定了客戶管理金鑰,請確定您帳戶中的使用者擁有kms:Decrypt
和kms:GenerateDataKey
權限 AWS KMS key
將政AmazonRDSPerformanceInsightsReadOnly策附加到 IAM 主體
AmazonRDSPerformanceInsightsReadOnly
這是一項 AWS 受管政策,可授予對 Amazon RDS Performance Insights API 所有唯讀操作的存取權。
若您將 AmazonRDSPerformanceInsightsReadOnly
連接至許可集或角色,收件人可使用績效詳情搭配其他主控台功能。
如需詳細資訊,請參閱 AWS 管理策略:亞馬遜 PerformanceInsightsReadOnly。
將政AmazonRDSPerformanceInsightsFullAccess策附加到 IAM 主體
AmazonRDSPerformanceInsightsFullAccess
這是一項 AWS 受管政策,可授予對 Amazon RDS Performance Insights API 所有操作的存取權。
若您將 AmazonRDSPerformanceInsightsFullAccess
連接至許可集或角色,收件人可使用績效詳情搭配其他主控台功能。
如需詳細資訊,請參閱 AWS 管理策略:亞馬遜 PerformanceInsightsFullAccess。
建立績效詳情的自訂 IAM 政策
對於沒有或AmazonRDSPerformanceInsightsFullAccess
政策的使用者,您可以透過建立AmazonRDSPerformanceInsightsReadOnly
或修改使用者管理的 IAM 政策來授與 Performance Insights 的存取權。在將該政策連接至許可集或角色時,收件人可以使用績效詳情。
建立自訂政策
前往 https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 -
在導覽窗格中,選擇政策。
-
選擇 Create policy (建立政策)。
-
在 [建立原則] 頁面上,選擇 [JSON] 選項。
-
複製並貼上「AWS 受管理策略參考指南」AmazonRDSPerformanceInsightsReadOnly或AmazonRDSPerformanceInsightsFullAccess政策中「JSON 政策文件」區段中提供的文字。
-
選擇 Review policy (檢閱政策)。
-
為政策提供名稱並選擇性輸入描述,然後選擇 Create policy (建立政策)。
現在您可以將政策連接到許可集或角色。以下程序假設您已有基於此用途使用的使用者。
將政策連接至使用者
在以下網址開啟 IAM 主控台:https://console.aws.amazon.com/iam/
。 -
在導覽窗格中,選擇 Users (使用者)。
-
從清單中選擇現有的使用者。
重要
若要使用績效詳情,除了自訂政策以外,請務必確認您還擁有存取 Amazon RDS 的權限。例如,
AmazonRDSPerformanceInsightsReadOnly
預先定義政策提供對 Amazon RDS 的唯讀存取。如需更多詳細資訊,請參閱 使用政策管理存取權。 -
在 Summary (摘要) 頁面上,選擇 Add permissions (新增許可)。
-
選擇 Attach existing policies directly (直接連接現有政策)。對於搜尋,請輸入原則名稱的前幾個字元,如下圖所示。
-
選擇您的政策,然後選擇 Next: Review (下一步:檢閱)。
-
選擇 Add permissions (新增許可)。
設定績效詳情的 AWS KMS 政策
Performance Insights 使用 AWS KMS key 加密機密資料。當您透過 API 或主控台啟用績效詳情時,可以執行下列任一操作:
-
選擇預設值 AWS 受管金鑰。
Amazon RDS 會 AWS 受管金鑰 針對您的新資料庫執行個體使用。Amazon RDS 會為您的 AWS 帳戶建立 AWS 受管金鑰 。你 AWS 帳戶 有一個不同 AWS 受管金鑰 的 Amazon RDS 為每個 AWS 區域。
-
選擇客戶受管金鑰。
如果您指定客戶受管金鑰,則您帳戶中呼叫績效詳情 API 的使用者需要 KMS 金鑰的
kms:Decrypt
和kms:GenerateDataKey
許可。您可以透過 IAM 政策設定這些許可。不過,我們建議您透過 KMS 金鑰政策來管理這些許可。如需詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的在 AWS KMS中使用金鑰政策。
下列範例說明如何將陳述式新增至 KMS 金鑰政策。這些陳述式允許存取績效詳情。視您使用 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 使用客戶壽館金鑰來加密敏感資料。當您開啟 Performance Insights 時,可以透過 API 提供 AWS KMS 金鑰。Performance Insights 會在此金鑰上建立 KMS 許可。它會使用金鑰並執行必要的操作來處理敏感資料。敏感資料包括使用者、資料庫、應用程式及 SQL 查詢文字等欄位。Performance Insights 可確保靜態資料和傳輸中資料保持加密狀態。
Performance Insights IAM 如何搭配使用 AWS KMS
IAM 會提供許可給特定 API。Performance Insights 具有下列公有 API,您可以使用 IAM 政策來限制這些 API:
DescribeDimensionKeys
GetDimensionKeyDetails
GetResourceMetadata
GetResourceMetrics
ListAvailableResourceDimensions
ListAvailableResourceMetrics
您可以使用下列 API 請求來取得敏感資料。
DescribeDimensionKeys
GetDimensionKeyDetails
GetResourceMetrics
當您使用 API 取得敏感資料時,Performance Insights 會利用呼叫者的憑證。此檢查可確保敏感資料的存取權限於可存取 KMS 金鑰的人。
呼叫這些 API 時,您需要許可才能透過 IAM 政策和許可呼叫 API,以透過 AWS KMS 金鑰政策叫用kms:decrypt
動作。
GetResourceMetrics
API 可能會同時傳回敏感和非敏感資料。請求參數會決定回應是否應包含敏感資料。當請求的 filter 或 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 }
授予 Performance Insights 的細微存取權
精細的存取控制提供了控制 Performance Insights 存取的其他方式。此存取控制可允許或拒絕存取GetResourceMetrics
、DescribeDimensionKeys
和「Perfor GetDimensionKeyDetails
mance Insights」動作的個別維度。若要使用精細的存取權,請使用條件金鑰在 IAM 政策中指定維度。存取權的評估遵循 IAM 政策評估邏輯。如需詳細資訊,請參閱《IAM 使用者指南》中的政策評估邏輯。如果 IAM 政策陳述式未指定任何維度,則陳述式會控制指定動作所有維度的存取權。如需可用維度的清單,請參閱DimensionGroup。
若要找出您的認證有權存取的維度,請使用中的AuthorizedActions
參數ListAvailableResourceDimensions
並指定動作。允許的值AuthorizedActions
如下所示:
-
GetResourceMetrics
-
DescribeDimensionKeys
-
GetDimensionKeyDetails
例如,如果您指GetResourceMetrics
定AuthorizedActions
參數,則會ListAvailableResourceDimensions
傳回GetResourceMetrics
動作授權存取的維度清單。如果您在AuthorizedActions
參數中指定多個動作,則會ListAvailableResourceDimensions
傳回授權存取這些動作的維度交集。
下列範例提供對於和DescribeDimensionKeys
動作之指定維度GetResourceMetrics
的存取權。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowToDiscoverDimensions", "Effect": "Allow", "Action": [ "pi:ListAvailableResourceDimensions" ], "Resource": [ "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W" ] }, { "Sid": "SingleAllow", "Effect": "Allow", "Action": [ "pi:GetResourceMetrics", "pi:DescribeDimensionKeys" ], "Resource": [ "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W" ], "Condition": { "ForAllValues:StringEquals": { // only these dimensions are allowed. Dimensions not included in // a policy with "Allow" effect will be denied "pi:Dimensions": [ "db.sql_tokenized.id", "db.sql_tokenized.statement" ] } } } ] }
以下是要求維度的回應:
// ListAvailableResourceDimensions API // Request { "ServiceType": "RDS", "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W", "Metrics": [ "db.load" ], "AuthorizedActions": ["DescribeDimensionKeys"] } // Response { "MetricDimensions": [ { "Metric": "db.load", "Groups": [ { "Group": "db.sql_tokenized", "Dimensions": [ { "Identifier": "db.sql_tokenized.id" }, // { "Identifier": "db.sql_tokenized.db_id" }, // not included because not allows in the IAM Policy { "Identifier": "db.sql_tokenized.statement" } ] } ] } ] }
下列範例會為維度指定一個允許和兩個拒絕存取權。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowToDiscoverDimensions", "Effect": "Allow", "Action": [ "pi:ListAvailableResourceDimensions" ], "Resource": [ "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W" ] }, { "Sid": "O01AllowAllWithoutSpecifyingDimensions", "Effect": "Allow", "Action": [ "pi:GetResourceMetrics", "pi:DescribeDimensionKeys" ], "Resource": [ "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W" ] }, { "Sid": "O01DenyAppDimensionForAll", "Effect": "Deny", "Action": [ "pi:GetResourceMetrics", "pi:DescribeDimensionKeys" ], "Resource": [ "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W" ], "Condition": { "ForAnyValue:StringEquals": { "pi:Dimensions": [ "db.application.name" ] } } }, { "Sid": "O01DenySQLForGetResourceMetrics", "Effect": "Deny", "Action": [ "pi:GetResourceMetrics" ], "Resource": [ "arn:aws:pi:us-east-1:123456789012:metrics/rds/db-ABC1DEFGHIJKL2MNOPQRSTUV3W" ], "Condition": { "ForAnyValue:StringEquals": { "pi:Dimensions": [ "db.sql_tokenized.statement" ] } } } ] }
以下是要求維度的回應:
// ListAvailableResourceDimensions API // Request { "ServiceType": "RDS", "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W", "Metrics": [ "db.load" ], "AuthorizedActions": ["GetResourceMetrics"] } // Response { "MetricDimensions": [ { "Metric": "db.load", "Groups": [ { "Group": "db.application", "Dimensions": [ // removed from response because denied by the IAM Policy // { "Identifier": "db.application.name" } ] }, { "Group": "db.sql_tokenized", "Dimensions": [ { "Identifier": "db.sql_tokenized.id" }, { "Identifier": "db.sql_tokenized.db_id" }, // removed from response because denied by the IAM Policy // { "Identifier": "db.sql_tokenized.statement" } ] }, ... ] } ] }
// ListAvailableResourceDimensions API // Request { "ServiceType": "RDS", "Identifier": "db-ABC1DEFGHIJKL2MNOPQRSTUV3W", "Metrics": [ "db.load" ], "AuthorizedActions": ["DescribeDimensionKeys"] } // Response { "MetricDimensions": [ { "Metric": "db.load", "Groups": [ { "Group": "db.application", "Dimensions": [ // removed from response because denied by the IAM Policy // { "Identifier": "db.application.name" } ] }, { "Group": "db.sql_tokenized", "Dimensions": [ { "Identifier": "db.sql_tokenized.id" }, { "Identifier": "db.sql_tokenized.db_id" }, // allowed for DescribeDimensionKeys because our IAM Policy // denies it only for GetResourceMetrics { "Identifier": "db.sql_tokenized.statement" } ] }, ... ] } ] }