🏗️

TerraformでAWSにGitHub Actions用のOIDCプロバイダーを作成する

公開日
8か月前
2023-10-17
更新履歴
preview

概要

AWSでGitHubのOIDC (OpenID Connect) プロバイダーを使用して認証を行うようにすることで、アクセスキーなどの認証情報をGitHubに保存することなく、GitHubからAWSのリソースにアクセスすることができるようになります。

使用するモジュール

terraform-aws-modules/iam/aws | Terraform Registry

locals

locals {
  github_oidc_role_name = "github-actions-role"
}

OIDC Provider

module "iam_github_oidc_provider" {
  source  = "terraform-aws-modules/iam/aws//modules/iam-github-oidc-provider"
  version = "5.17.0"
}

Role

subjects は任意のGitHubリポジトリを設定します。

module "iam_github_oidc_role" {
  source  = "terraform-aws-modules/iam/aws//modules/iam-github-oidc-role"
  version = "5.17.0"

  name = local.github_oidc_role_name

  subjects = [
    "example-org/example-repo:*",
  ]

  policies = {
    additional = aws_iam_policy.github_oidc_role_policy.arn
  }
}

RoleのPolicy

このサンプルは全て許可するポリシーになっているので、適宜修正します。

resource "aws_iam_policy" "github_oidc_role_policy" {
  name        = "${local.github_oidc_role_name}-policy"
  description = "GitHub actions policy"

  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        "Effect" : "Allow",
        "Action" : "*",
        "Resource" : "*"
      }
    ]
  })
}

GitHub Actionsでの認証方法

- name: Configure AWS Credentials
  uses: aws-actions/configure-aws-credentials@v2
  with:
    role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
    role-session-name: aws-role-session
    aws-region: ${{ vars.AWS_REGION }}