AWS 向け OIDC
Bitriseのビルド中にOIDCトークンを生成して、AWSスコープの権限を持つAWSアイデンティティおよびアクセス管理(IAM)ロールと交換してください。
Bitriseのビルド中にOIDCトークンを生成して、AWSスコープの権限を持つAWSアイデンティティおよびアクセス管理(IAM)ロールと交換してください。
AWS で OIDC トークンを使用するには、以下を行う必要があります。
-
AWS アカウントに IAM OIDC プロバイダーを作成します。
-
カスタムの信頼ポリシーを追加します。つまり、ID トークンのルールを記述することになります。
Bitriseでは、次のいずれかを使用してトークンを取得できます OICD アイデンティティートークンを取得 ステップ 1 または AWS で認証する ステップ 1。
IAM への OIDC アイデンティティプロバイダーの追加
AWS アカウントに IAM OIDC プロバイダーを設定します。
AWS ユーザーガイド
IAM OIDC プロバイダーの詳細については、 公式 AWS ユーザーガイド。
-
AWS アカウントにログインします。
-
に移動 IAM。
-
左側で検索 アクセス管理 そして選択してください ID プロバイダー。
-
クリック 。
-
[選択] OpenID コネクト。
-
を設定 プロバイダー URL フィールド:
https://token.builds.bitrise.io。 -
を設定 オーディエンス フィールドへ
sts.amazonaws.com。 -
クリック 。

-
で ID プロバイダー ページで、新しく作成した ID プロバイダーを選択し、ARN をコピーします。
ARN は次のようになります。
arn:aws:iam::ACCOUNT_NUMBER:oidc-provider/token.builds.bitrise.io。
カスタム信頼ポリシーの追加
AWS IAMにカスタム信頼ポリシーを追加して、Bitrise IDトークンのルールを記述します。
AWS ドキュメント
私たちのガイドは、Bitriseビルド用のAWSポリシーを設定するのに役立ちます。信頼ポリシーの詳細については、AWS ドキュメントをご覧ください カスタム信頼ポリシーを使用してロールを作成する。
-
AWS アカウントにログインします。
-
に移動 IAM。
-
左側で検索 アクセス管理 そして選択してください 役割。
-
クリック 。

-
[選択] カスタム信頼ポリシー。

-
カスタムトラストポリシーエディターでステートメントを作成して OIDC トークンのルールを設定します。
ポリシーの作成
ポリシーの作成方法の詳細については、AWS ドキュメントをご覧ください。 IAM ポリシーの作成。
-
を追加
Principal: タイプは、以前に作成した ARN を含むフェデレーテッドユーザーセッションである必要があります。を参照してください。Federated以下の例では。 -
を追加
Actionとsts:AssumeRoleWithWebIdentity値。 -
アンダー
Conditions、ID トークンのクレームと照合します。使用可能な文字列条件演算子は、以下にあります。 AWS ドキュメント。以下の例では、オーディエンス、Bitriseプロジェクトスラッグ、ワークフロー名をチェックしています。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::ACCOUNT_NUMBER:oidc-provider/token.builds.bitrise.io" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "token.builds.bitrise.io:aud": "sts.amazonaws.com", "token.builds.bitrise.io:app_slug": "APP_SLUG", "token.builds.bitrise.io:workflow": "run-tests", } } } ] } -
-
完了したら、をクリックします 。
-
ロールに必要な権限を選択します。
必要な権限は、AWS でアクセスしようとしているサービスによって異なります。たとえば、ビルド中に S3 バケットにファイルをアップロードするには、以下を選択します Amazon S3 フルアクセス。
-
完了したら、をクリックします 。
-
ロールに名前を付け、必要に応じて説明を追加します。
-
クリック 完了したら。
トークンの取得と交換
AWSでカスタムトラストポリシーを使用してOIDCアイデンティティプロバイダーを正常に設定すると、Bitriseビルドは選択したサービスとトークンを交換できます。次のことができます。
-
でトークンを取得する OIDC ID トークンを取得 ステップ1を実行してから、スクリプトを使用して認証情報の交換を行います。
-
を使う AWS で認証する プロセス全体を処理する手順。
OIDC ID トークンの取得ステップの使用
ザ・ OIDC ID トークンの取得ステップ という環境変数を公開します。 BITRISE_IDENTITY_TOKEN。この Env Var をスクリプトで使用して、AWS と認証情報を交換できます
-
Bitriseでワークフローエディターを開きます。
-
を追加 OIDC アイデンティティートークンを取得 ワークフローへのステップ。
-
を設定 トークン・オーディエンス への入力
sts.amazonaws.com。 -
を使う
BITRISE_IDENTITY_TOKEN環境変数:任意の CLI ツールまたは API エンドポイントに入力できます。でスクリプトを作成できます スクリプト トークン交換を実行し、応答から認証情報を抽出するステップ。認証情報として 3 つの Env Var が必要です
-
AWS_ACCESS_KEY_ID -
AWS_SECRET_ACCESS_KEY -
AWS_SESSION_TOKEN
エクスポート後、AWS CLI が自動的にそれらをピックアップして使用します。CLI によるあらゆる種類のアクションは単純に機能します。
たとえば、短期間の認証情報を取得し、AWS CLI で現在の認証済みセッションの詳細を出力すると、次のようになります。
# Perform the token exchange and save the response AWS_RESPONSE=$(aws sts assume-role-with-web-identity \ --role-arn "arn:aws:iam::065600603509:role/OIDC-TEST" \ --role-session-name "bitrise-${BITRISE_BUILD_NUMBER}" \ --web-identity-token "$BITRISE_IDENTITY_TOKEN" \ --output json) # Extract the credentials from the reponse export AWS_ACCESS_KEY_ID=$(echo "$AWS_RESPONSE" | jq -r '.Credentials.AccessKeyId') export AWS_SECRET_ACCESS_KEY=$(echo "$AWS_RESPONSE" | jq -r '.Credentials.SecretAccessKey') export AWS_SESSION_TOKEN=$(echo "$AWS_RESPONSE" | jq -r '.Credentials.SessionToken') # The AWS cli will automatically pick up the env vars from the section above aws sts get-caller-identity -
AWS での認証ステップの使用
ザ・ AWS による認証 ステップは OIDC トークンをリクエストし、AWS との認証情報の交換を行います。つまり、認証を実行するために独自のスクリプトを作成する必要はなく、Step が自動的に処理してくれます
-
Bitriseでワークフローエディターを開きます。
-
を追加 AWS による認証 ワークフローへのステップ。
-
を設定 トークン・オーディエンス への入力
sts.amazonaws.com。 -
を設定 AWS ロール ARN という値に 設定した ID プロバイダー AWS マネジメントコンソールで。
ドッカーログイン
このステップのもう1つの便利な機能は、DockerをEC2コンテナレジストリに自動的にログインできることです。 Docker Step 設定でグループを入力し、次のように設定します。
true。これは Linux スタックでのみサポートされています。
このステップでは、認証情報が正しい形式で公開されます。その後は、AWS CLI によるあらゆる種類のアクションが問題なく機能します