👋

GitHub から AWS CodeCommitへのpush-AWS側

2022/10/20に公開

GitHubからAWS CodeCommitへのpush

概要

GitHub Actionsを利用してブランチへのプッシュをトリガーに、

OIDC認証を利用してAWS CodeCommitへpushを行う設定手順。

GitHubのプランによってはGitHub Actionsが使えない。

  • OpenID Connect (OIDC)
  • GitHub Actions

AWS側の設定

CodeCommit

CodeCommitにアクセスし同期先のリポジトリを作成。

リポジトリを作成

「リポジトリを作成」ボタンを押下。

リポジトリの設定

  1. 「リポジトリ名」を入力。
  2. 「説明」を入力。
  3. 「作成」ボタンを押下。

作成完了

Identity and Access Management (IAM)にアクセス

IAMでGitHubからのAWSへの接続が行えるようにアクセス認証の設定を行う。

ポリシー作成

「ポリシーを作成」ボタンを押下。

ポリシー設定

  1. 「JSON」タブを選択。
  1. 下記のJSONに置き換える。

Pushが行えれば良いので、GitPushのみ許可。

Resourceに上記で作成したリポジトリのリポジトリARNを設定。

  • リポジトリを1つ設定する場合
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "codecommit:GitPush",
            "Resource": "arn:aws:codecommit:リージョン:ID:GitHubCodeCommitSync"
        }
    ]
}
  • リポジトリを複数設定する場合
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "codecommit:GitPush",
            "Resource": [
                "arn:aws:codecommit:リージョン:ID:GitHubCodeCommitSync",
                "リポジトリARN",
                "リポジトリARN"
            ]
        }
    ]
}
  1. 「次のステップ:タグ」ボタンを押下。

タグ追加

  1. 必要に応じてタグを追加。
  1. 「次のステップ:確認」ボタンを押下。

ポリシー名を設定

  1. 「名前」を入力。
  2. 「説明」を入力。
  3. 「ポリシーの作成」ボタンを押下。

作成完了

IDプロバイダ作成

「プロバイダを追加」ボタンを押下。

プロバイダの設定

https://docs.github.com/ja/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services

GitHub Docs の情報を元に、プロバイダ設定を行う。

  1. 「プロバイダのタイプ」は「OpenID Connect」を選択。
  2. 「プロバイダのURL」は「https://token.actions.githubusercontent.com」を入力。
  3. 「サムプリントを取得」ボタンを押下。
  4. 「対象者」は「sts.amazonaws.com」を入力。
  5. 必要に応じてタグを追加する。
  6. 「プロバイダを追加」ボタンを押下。

作成完了

完了メッセージの「ロールの割り当て」ボタンを押下。

ロールの割り当て

作成したIDプロバイダーを利用したロールの作成を行う。

  1. 「新しいロールを作成」を選択。
  2. 「次へ」ボタンを押下。

ロールの作成

  1. 「ウエブID」を選択。
  2. 「IDプロバイダー」は「token.actions.githubusercontent.com:aud」を選択。
  3. 「Audience」は「sts.amazonaws.com」を選択。
  4. 「次のステップ:アクセス権限」ボタンを押下。

アクセス権限ポリシー割り当て

  1. 上記で作成しておいたポリシーを割り当て。
  2. 「次のステップ:タグ」ボタンを押下。

タグ追加

  1. 必要に応じてタグを追加。
  2. 「次のステップ:確認」ボタンを押下。

作成するロールの確認

  1. 「ロール名」を入力。
  2. 「ロール説明」を入力。
  3. 「ロールの作成」ボタンを押下。

作成完了

ロールの信頼関係を編集

  1. 作成したロールを開く。
  2. 「信頼関係」を選択。
  3. 「信頼ポリシーを編集」ボタンを押下。

編集

  • 編集前
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::ID番号:oidc-provider/token.actions.githubusercontent.com"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
                }
            }
        }
    ]
}
  • 編集後
    「StringLike」を追加、GitHubの情報を定義。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::ID番号:oidc-provider/token.actions.githubusercontent.com"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
                },
                "StringLike": {
                    "token.actions.githubusercontent.com:sub": "repo:リポジトリオーナー/リポジトリ:ref:refs/heads/ブランチ"
                }
            }
        }
    ]
}

更新

  1. セキュリティやエラーがない事を確認。
  2. 「ポリシーを更新」ボタンを押下。

完了

  • 作成したロールの「ARN」を控えておく。
  • 作成したCodeCommitの「HTTPSリポジトリURL」を控えておく。

AWS側の設定は以上で完了。
次はGitHub側で、Actionsを定義。

続き、GitHub側

Discussion