Terraform CloudにおけるAWS OIDC認証の実装Tips
はじめに
本記事では、Terraform Cloud(以下、「TFC」とする)を使用してAWSにプロビジョニングする際にOIDC認証を利用する方法を紹介します。
2023年1月にHashiCorpより、TFCが各種クラウドプロバイダーへのOIDC認証へ対応した旨のアナウンスがありました。
Terraform Cloud Adds Dynamic Provider Credentials for Vault and Official Cloud Providers
従来、Terraformから各種クラウドにプロビジョニングする際にはWorkspaceのVariablesにシークレットを設定する必要があります。
AWSのアクセスキーおよびシークレットキーを環境変数として設定
上記アップデートにより、あらかじめTFCとAWSに信頼関係を設定していれば、OIDC認証を利用すること、およびIAM RoleのArnの指定のみでプロビジョニングを行うことができ、シークレットの運用から解放されます。
AWS OIDC認証を利用する場合の環境変数の設定
OIDC認証の実装方法は、HashiCorpから公式チュートリアルが公開されています。
Authenticate Providers with Dynamic Credentials
下記では実際にチュートリアルに基づき実施した手順といくつかの工夫点を紹介しています。
概要
- 環境準備
- 信頼関係の設定
- OIDC認証を利用したプロビジョニング
1. 環境準備
チュートリアルは下記環境で実施しました。
2. 信頼関係の設定
まず、TFCがAWSのOIDC認証を利用できるように信頼関係を設定します。
公式チュートリアルでは、下記リポジトリ配下のtfファイル群をapplyすることで設定できます。
learn-terraform-dynamic-credentials/aws/trust/
上記リポジトリのmain.tfファイルについて解説します。
下記コードではOIDC設定を行うリソースを作成しています。'tls_certificate'でTerraform Cloudの公開証明書を取得し、'aws_iam_openid_connect_provider'で証明書の情報を設定しています。
また、'aws_iam_role'でTFCのためのIAM Roleを作成し、フェデレーショントークンを経由してAWSにアクセスできるようにしています。Condition句では、このIAM Roleを利用できるTFCを制限しています。
'aws_iam_policy'でTFCがAWS上で実行可能な権限を定義しています。
信頼関係の設定が完了するとAWSコンソールからIAMのIDプロバイダにTFCが登録されていることを確認できます。
また、apply実行後に出力される'role_arn'の値を控えます。
3. OIDC認証を利用したプロビジョニング
TFCでAWSのOIDC認証を利用してプロビジョニングする際には、下記2つのEnvironment Variableを設定します。
Key | Value | Sensitive |
---|---|---|
TFC_AWS_PROVIDER_AUTH | true | No |
TFC_AWS_RUN_ROLE_ARN | 前期手順で出力された'role_arn'の値 | No |
実際のTFCのWorkspace Variable設定画面
applyを実行し任意のクラウドリソースを作成します。
おわりに
AWS OIDC認証を利用することでTFCのWorkspaceにプロバイダのシークレットを管理することなくプロビジョニングを実施でき、よりセキュアかつ低コストなクラウド運用を実現できます。
Discussion