Github ActionsでIAMロールを利用してAWSリソースを操作する
はじめに
弊社ではAWSリソースをTerraformやCloudFormationで管理し、plan/applyの実行にはGithub Actionsを使っています。本稿ではGithub ActionsからAWSリソースを操作するためのIAMロールの設定について説明します。
IAMロールを利用するメリット
Github ActionsからAWSリソースを操作するために利用する認証方法には以下のふたつが挙げられます。
アクセスキーおよびシークレットキー
IAMロール
アクセスキーによる方法にはセキュリティリスクが伴います。アクセスキーとシークレットキーがありさえすればどこからでも使え、漏洩すると不正利用される可能性があるためです。さらに、TerraformやCloudFormationによる処理に割り当てられるIAMポリシーは広大になりがちなので、漏洩した時の被害が甚大になる可能性があります。
一方、IAMロールを利用する方法では、一時的な認証情報(STSトークン)を発行することで、安全かつ柔軟にAWSリソースへアクセスできます。特に、GitHub ActionsのようなCI/CD環境では、OIDC(OpenID Connect)を活用することで、アクセスキーを不要にし、より安全な認証フローを実現できます。
設定手順
IAMロール(OIDC)の設定手順
OIDCプロバイダーをAWSに設定
IAMのメニューから「IDプロバイダ」を選択し「プロバイダを追加」をクリックします。
プロバイダのタイプで「OpenID Connect」を選択します。
以下を入力します。
URLにtoken.actions.githubusercontent.com
対象者にsts.amazonaws.com
IAMロールの作成とポリシー設定
GitHub Actions用のIAMロールを作成します。
作成したロールに、必要十分なIAMポリシー(S3、CloudFormation、Lambda等)を設定します。
信頼ポリシーの設定(GitHubリポジトリを許可)
作成したロールの信頼関係タブで以下のように信頼ポリシーを設定します。PrincipalのARNやgithubのリポジトリ名は環境に合わせて変更してください。
GitHub ActionsでIAMロールを利用する
GitHub Actionsワークフローの更新
利用したいGithub Actionsのyamlに以下を記載します。
次に、Github ActionsのSecretsに AWS_ROLE_ARN
を登録します。
AWS CLI / SDK での認証確認
これは必ずしも必須ではありませんが、Github Actionsが意図通りに動かない場合は、以下のコードをyamlに追記してIAMロールを適切に引き受けられているのかを確認すると良いです。
以上で設定完了です。アクセスキー方式より煩雑ではありますが、一度行えばセキュリティを保ってGithub Actionsを運用できます。
最終更新
役に立ちましたか?