MackerelでIAMロールでの設定が行えるようになりました。
AccessKeyでは無く、Roleを推奨ということなので、IAMロールで設定します。
AWSリソースは AWS CLI で作成します。
-
AssumeRoleによるAWSインテグレーションが利用に可能になりました・死活監視の仕様を変更しました ほか - Mackerel ブログ #mackerelio
AssumeRoleによるAWSインテグレーションが利用可能になりました
公式手順も更新されています。
-
セキュリティー保全の観点から、IAMロールで設定する方法を強く推奨します。
事前準備
IAMロール作成に必要になる JSON ファイルを準備します。
ポリシーファイル作成
AssumeRolePolicyDocument.json
公式手順に記載の Account ID、External ID で作成します。
許可するAccount IDには 217452466226 、External IDには Mackerel-AWS-Integration と入力して下さい。
{
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::217452466226:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "Mackerel-AWS-Integration"
}
}
}
]
}
MackerelAWSIntegrationPolicy.json
タグ絞り込み用のインラインポリシーです。
AWSインテグレーションの対象リソースが増えた場合は適宜追加が必要になると思います。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeTags"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"elasticloadbalancing:DescribeTags"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"rds:ListTagsForResource"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"elasticache:ListTagsForResource"
],
"Resource": [
"*"
]
}
]
}
IAMロール作成
IAMロール
ポリシーファイルを使用してIAMロールを作成します。
aws iam create-role \
--role-name "MackerelAWSIntegrationRole" \
--assume-role-policy-document file://AssumeRolePolicyDocument.json
IAMポリシー付与
公式記載のポリシーを作成したIAMロールに付与します。
AWSインテグレーションの対象リソースが増えた場合は、ポリシーの追加が必要になると思います。
for POLICYNAME in \
AmazonEC2ReadOnlyAccess \
AmazonElastiCacheReadOnlyAccess \
AmazonRDSReadOnlyAccess
do
aws iam attach-role-policy \
--role-name "MackerelAWSIntegrationRole" \
--policy-arn arn:aws:iam::aws:policy/${POLICYNAME}
sleep 1
done
インラインポリシー付与
ポリシーファイルを使用してタグ絞り込み用のインラインポリシーを付与します。
aws iam put-role-policy \
--role-name "MackerelAWSIntegrationRole" \
--policy-name "MackerelAWSIntegrationPolicy" \
--policy-document file://MackerelAWSIntegrationPolicy.json
IAMロール作成結果
- IAM Role
Mackerel に設定
ARN取得
aws iam list-roles \
--query 'Roles[?RoleName==`MackerelAWSIntegrationRole`].Arn' \
--output text
ARNをAWSインテグレーションへ登録
タグ絞り込みを行い、意図した台数となることを確認できました。