【AWS】OIDCを作成してGitHubActionsからAWSへアクセスできるようにする

AWS IAM

 

GitHub ActionsでAWSへアクセスする際に認証をどう突破するかが重要です。

GitHub の Actions secrets and variables からAWSの認証情報を読み込む方法もありますが、

機密情報を持たせておくのはセキュリティ的にはよろしくない

 

そこで、AWSでOIDC(OpenID Connect)を作成し、使用することを考えます。

 

OIDCはAWSコンソールを使用して作成します。

 

 

OIDC(OpenID Connect)とは

 

こちらの記事がわかりやすいと思います

一番分かりやすい OpenID Connect の説明 - Qiita
はじめに過去三年間、技術者ではない方々に OpenID Connect(オープンアイディー・コネクト)の説明を繰り返してきました※1。 その結果、OpenID Connect をかなり分かりやすく…

 

AWSドキュメントはこちらです。

ERROR: The request could not be satisfied

 

GitHubのドキュメントはこちら

About security hardening with OpenID Connect - GitHub Docs
OpenID Connect allows your workflows to exchange short-lived tokens directly from your cloud provider.

 

OIDC(OpenID Connect)を作成

IDプロバイダを作成

 

IAMコンソール > IDプロバイダ > プロバイダを追加 で作成画面に遷移する

 

 

作成画面にて、各設定を入れていきます

プロバイダのタイプ OpenID Connect
プロバイダの URL
(入力後「サムプリントを取得」をクリック)
https://token.actions.githubusercontent.com
対象者 sts.amazonaws.com

 

 

プロバイダのURLを入力後、「サムプリントを取得」をクリックするとサムプリントが表示される

 

 

右下の「プロバイダを追加」をクリックして、IDプロバイダを確認します。

 

 

IAMロールの作成

 

IAMコンソール > ロール > ロールを作成 をクリック

 

 

IAMロールの設定をしていきます

信頼されたエンティティタイプ カスタム信頼ポリシー
カスタム信頼ポリシー 下記JSONにて必要な情報を置換して入力

 

 

Conditionにて、指定したリポジトリからのアクセスのみ許可するようにしています

 

 

どの操作を許可するか選んで、「次へ」をクリックします。

要件に合わせて適宜ポリシーをアタッチしてください。

今回はとりあえず、AmazonS3ReadOnlyAccess を指定しておきます

 

 

名前、説明を入力し、ポリシーが適切か確認します。OKなら「ロールを作成」をクリック

 

名前や説明は自分がわかりやすいものであればなんでもいいです。

私はこんな感じにしました。

名前 GitHubActionsOIDCRole
説明 GitHubActions use this role to access to aws

 

 

これでAWS側の準備が完了したのでGitHubActionsを使用してテストしてみます

 

GitHub Actions でAWSにアクセスできるかテスト

 

任意のリポジトリからAWSにアクセスできるかテストしてみます!

テスト用にoidc_testというリポジトリを作成したので、それを使っていきます。

 

mainブランチからテスト用のtestブランチをきります

 

GitHub Actionsのワークフローを定義するため
.github/workflows/aws_access_test.yml を作成します

 

.github/workflows/ 配下のYAMLファイル
ワークフローを定義することでGitHub Actionsを使用できます

 

(ディレクトリ)

terraform_test
├── .github
│ └── workflows
│  └── aws_access_test.yml  // 作成
└── README.md

 

こちらを参考にaws_access_test.ymlに記述していきます

 

testブランチにpushした際に

aws sts get-caller-identity

が実行されるワークフローが定義できました!

 

このワークフローでGitHub ActionsからAWSにアクセスできるかpushして確認します

 

GitHub > リポジトリ > Actions から結果を確認できます

 

無事成功していますね!

 

参考

 

GitHub Actions で OIDC を使用して AWS 認証を行う
404 | DevelopersIO

 

コメント

タイトルとURLをコピーしました