Amazon Managed Service for Prometheus のリソースベースポリシーに設定できる Action を検証してみた
こんにちは。オペレーション部のしいなです。
はじめに
Amazon Managed Service for Prometheus ではリソースベースポリシーをサポートしています。
詳細は下記ブログをご参照ください。
今回、リソースベースポリシーについて調べる機会があったので、設定時の注意点をまとめてみました。
結論
リソースベースポリシーの Action 要素には Prometheus 互換 API(aps:RemoteWrite、aps:GetSeries、aps:GetLabels、aps:GetMetricMetadata、aps:QueryMetricsなど)のみ指定が可能です。
検証した限りでは、非互換 API や ワイルドカード(*)を指定することはできません。
検証してみた
Amazon Managed Service for Prometheus のワークスペースに対して、次の3つのパターンの Action 要素でリソースベースポリシーの設定を検証してみました。
- Prometheus 互換 API のみ
- Prometheus 非互換 API を含む
- ワイルドカード(*)を指定
前提
- Amazon Managed Service for Prometheus ワークスペース作成済み
- AWS CLI コマンドを利用してリソースベースポリシーの設定を実施
Prometheus 互換 API のみ
Prometheus 互換 API(aps:RemoteWrite、aps:GetSeries、aps:GetLabels、aps:GetMetricMetadata)をリソースベースポリシーに設定してみます。
Prometheus 互換 API はドキュメント[1]を参考ください。
コマンド
aws amp put-resource-policy \
--workspace-id ws-XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX \
--policy file://amp-resource-policy1.json
リソースベースポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::XXXXXXXXXXXX:root"
},
"Action": [
"aps:RemoteWrite",
"aps:GetSeries",
"aps:GetLabels",
"aps:GetMetricMetadata"
],
"Resource": "arn:aws:aps:ap-northeast-1:XXXXXXXXXXXX:workspace/ws-XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX"
}
]
}
出力結果
{
"policyStatus": "CREATING",
"revisionId": "XXXXXXXXXXX"
}
リソースベースポリシーが作成中であるステータスが返されました。
しばらくしてからリソースベースポリシーを参照してみてみます。
コマンド
aws amp describe-resource-policy \
--workspace-id ws-XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX
出力
{
"policyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::XXXXXXXXXXXX:root\"},\"Action\":[\"aps:RemoteWrite\",\"aps:GetSeries\",\"aps:GetLabels\",\"aps:GetMetricMetadata\"],\"Resource\":\"arn:aws:aps:ap-northeast-1:XXXXXXXXXXXX:workspace/ws-XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX\"}]}",
"policyStatus": "ACTIVE",
"revisionId": "XXXXXXXXXXX"
}
問題なく、リソースベースポリシーを設定できることを確認できました。
Prometheus 非互換 API を含む
Prometheus 非互換 API(CreateWorkspace)をリソースベースポリシーに設定してみます。
コマンド
aws amp put-resource-policy \
--workspace-id ws-XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX \
--policy file://amp-resource-policy2.json
リソースベースポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::XXXXXXXXXXXX:root"
},
"Action": "aps:CreateWorkspace",
"Resource": "arn:aws:aps:ap-northeast-1:XXXXXXXXXXXX:workspace/ws-XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX"
}
]
}
出力結果
An error occurred (ValidationException) when calling the PutResourcePolicy operation: Resource policy contains actions that are not supported
アクションにサポートしていないアクションがリソースベースポリシーに含まれているため、バリデーションエラーが返されました。
ワイルドカード(*)を指定
ワイルドカード(*)をリソースベースポリシーに設定してみます。
コマンド
aws amp put-resource-policy \
--workspace-id ws-XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX \
--policy file://amp-resource-policy3.json
リソースベースポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::XXXXXXXXXXXX:root"
},
"Action": "aps:*",
"Resource": "arn:aws:aps:ap-northeast-1:XXXXXXXXXXXX:workspace/ws-XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX"
}
]
}
出力結果
An error occurred (ValidationException) when calling the PutResourcePolicy operation: Resource policy contains actions that are not supported
ワイルドカードでは Prometheus 非互換 API も包括するため、バリデーションエラーが返されました。
まとめ
リソースベースポリシーの Action 要素には Prometheus 互換 API のみ指定可能です。非互換 API やワイルドカード(*)を指定することはできませんでした。
IAM ポリシーの Action 要素に指定可能な API とは異なりますので、混同しないように注意が必要です。
クロスアカウントでメトリクスを収集する際などにリソースベースポリシーを設定する場合は、この点にご注意ください。
本記事が参考になれば幸いです。
参考







