0
0

IAM Roles for Service Accountsの認証情報をCamel Spring-bootで利用する方法

Last updated at Posted at 2024-07-29

概要

Spring Boot 環境において、AWS IAM Roles and Service Account (IRSA) を使用した認証情報で、s3やsqs などのAWS リソースにアクセスするのに、情報が少なかったので記載しておきます。

前提

必要なIAM ロールや、ポリシー、OIDCプロバイダの設定、k8s ServiceAccount リソースはすでに作成済みの前提で、Spring Boot 環境で実装する部分についてのみ記載します。
必要な IAM ロール、 ServiceAccount が設定され、Deployment と紐づけられた場合、Pod 内の環境変数として、AWS_ROLE_ARN, AWS_WEB_IDENTITY_TOKEN_FILE の環境変数が設定されます。
参考 からの更新部分になりますので、アーキテクチャについては参照元をご確認ください。

pom.xml

WebIdentityTokenFileCredentialsProvider プロバイダを使用する場合は、AWS STS モジュールも必要となります。
※ STS モジュールの依存関係が設定されていない場合、「WebIdentityTokenCredentialsProvider(): To use web identity tokens, the 'sts' service module must be on the class path.」というエラーがpod のログに表示されます。

pom.xml
<dependency>
    <groupId>org.apache.camel.springboot</groupId>
    <artifactId>camel-aws2-s3-starter</artifactId>
    <version>${camel.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.camel.springboot</groupId>
    <artifactId>camel-aws2-sqs-starter</artifactId>
    <version>${camel.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.camel.springboot</groupId>
    <artifactId>camel-aws2-sts-starter</artifactId>
    <version>${camel.version}</version>
</dependency>

application.properties

2024/7/27 現在、デフォルトの認証プロバイダチェーンに WebIdentityTokenFileCredentialsProvider が含まれていますので、useDefaultCredentialsProvider を true に設定します。

DefaultCredentialsProvider では、system, environment, WebIdentity の順に認証チェーンをたどります。 WebIedntityTokenFileCredentialsProvider では、環境変数 AWS_ROLE_ARN および AWS_WEB_IDENTITY_TOKEN_FILE が存在する場合、AWS_WEB_IDENTITY_TOKEN_FILE で指定されたフルパスのディスク上のトークンを使用して、AWS_ROLE_ARN で指定されたロールの引き受けを試みます。環境変数が使用された場合、プロバイダーは AWS_ROLE_SESSION_NAME 環境変数からセッションの設定を試みます。

ここでは、-starter バージョンを使用しているので、自動構成用のオプションを使用していますが、pom.xml でaws2-s3/aws2-sqs コンポーネントを使用している場合は、useDefaultCredentialsProviderで設定します。 ( 参考 5 , 参考 6

application.properties
camel.component.aws2-s3.use-default-credentials-provider=true
camel.component.aws2-sqs.use-default-credentials-provider=true

参考

  1. 【SpringBoot】AmazonS3にファイルをアップロード&ダウンロードする方法
  2. IAM Roles for Service Accountsの認証情報をAWS SDKで利用する方法
  3. Kubernetes サービスアカウントに対するきめ細やかな IAM ロール割り当ての紹介
  4. 詳解: IAM Roles for Service Accounts
  5. AWS S3 Storage Service
  6. AWS Simple Queue Service (SQS)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0