kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Terraform で Service-Linked Role(サービスにリンクされたロール)を作る

マネジメントコンソールを使ってリソースを設定していると自動的に「Service-Linked Role(サービスにリンクされたロール)」が作られていることがある💡実は AWS CloudFormation や Terraform を使って Service-Linked Role を IaC (Infrastructure as Code) で管理することもできて,今回はお試しとして Terraform の aws_iam_service_linked_role リソースを使って AWS Config の Service-Linked Role を作ってみる👌

👾 iam.tf

aws_iam_service_linked_role リソースの aws_service_name に AWS Config を表す config.amazonaws.com を設定しておけば OK👌 簡単❗️

resource "aws_iam_service_linked_role" "config" {
  aws_service_name = "config.amazonaws.com"
}

docs.aws.amazon.com

ちなみに Service-Linked Role をサポートしているサービス一覧は以下のドキュメントで確認できる📝

docs.aws.amazon.com

デプロイ確認

Terraform コードを apply すると Service-Linked Role AWSServiceRoleForConfig を追加できていた \( 'ω')/

AWS Security Hub と AWS Config

AWS Config には Service-Linked Role AWSServiceRoleForConfig もしくは マネージドポリシー AWS_ConfigRoleAWSConfigRole ではなく)をアタッチした IAM Role を使うとドキュメントには書いてある📝実際にポリシーを比較しても基本的には同じ設定になっていた.

docs.aws.amazon.com

しかし AWS Security Hub のコントロール [Config.1] AWS Config should be enabled and use the service-linked role for resource recording はデフォルトで Service-Linked Role AWSServiceRoleForConfig を使うことを要求していて,マネージドポリシー AWS_ConfigRole をアタッチした IAM Role を使っていると警告が出てしまう(includeConfigServiceLinkedRoleCheck パラメータで無効化することは可能).

よって,特殊な要件がなく AWS Security Hub に準拠するのであれば Service-Linked Role を使っておくのが良さそうだな〜と思った🤔

docs.aws.amazon.com