OIDC 認証
Bitriseでは、OIDCを使用すると、ワークフローに長期間有効な認証情報を埋め込むことなく、ビルドを外部システム(AWS、GCP、Azure、コンテナレジストリ、シークレット管理、アーティファクトストアなど)で認証できます。
OpenID Connect (OIDC) は、OAuth 2.0 フレームワーク上に構築されたアイデンティティ認証レイヤーです。これにより、アプリケーション間でシングル・サインオンを使用するなど、サード・パーティー・アプリケーションがエンド・ユーザーの身元を確認できるようになります
OIDC は、認証操作の結果とユーザーの ID に関する情報を提供する ID トークン (通常は JSON Web トークンまたは JWT) を発行することで機能します。認証結果とユーザー情報に関するデータはクレームと呼ばれます
トークンを受け取るサービスは、トークンのクレームをOIDCポリシーと照らし合わせて評価します。トークンの要求がポリシーと一致すればリクエストは許可され、一致しない場合は拒否されます。
BitriseはOIDCトークンの使用を以下の2つの方法でサポートしています。
-
BitriseビルドがAWS、GCP、Azure、コンテナレジストリ、シークレット管理、アーティファクトストアなどの外部システムに対して認証されるようにします。
-
外国のOIDCトークンを使用してBitriseへの認証を行い、有効期限が短いBitriseトークンを受け取ること。
OIDC による外部サービスへの認証
OIDC を使用すると、ワークフローに長期間有効な認証情報を埋め込むことなく、ビルドを外部システム (AWS、GCP、Azure、コンテナレジストリ、シークレット管理、アーティファクトストアなど) で認証できます。Bitriseは、ビルド番号、コミットハッシュ、リポジトリスラッグ、アプリスラッグ、ワークフロー名などのクレームを使用して、特定のビルドに関連する1つ以上のIDトークンを発行できます
これらのトークンは以下のとおりです。
-
特定のビルドインタラクションに対して発行されるため、サードパーティのサービスはその実行のみを対象とするアクセスを許可できます。
-
潜在的な暴露による影響を最小限に抑えるため、寿命が短い。
-
OIDCを受け入れるフェデレーションサービスで利用可能。たとえば、Bitrise OIDCトークンを一時的なクラウド認証情報と交換できます。
ビルド用の ID トークンをリクエストする
OIDCトークンを使用してBitriseビルドからサービスへの認証を行うには、トークンを取得してからサービスと認証情報を交換する必要があります。Bitriseはプロセスの一部を処理するステップを提供しています。
OIDC ID トークンの取得ステップ
以下のサービスでは、ビルドで OIDC トークンを使用してください。 OIDC ID トークンを取得 ステップ 1。このステップにより、ワークフローとパイプラインは、シークレットをリポジトリやビルド設定に保存しなくても、実行時にクラウドリソースまたは外部サービスへの一時的かつ監査可能なアクセスをリクエストできます
を設定 トークン・オーディエンス 入力してステップを設定します。これは、トークンを使用してアクセスしたいサービスの URL でも、サービスが提供する特定の ID でもかまいません。

このステップは、キーを含む環境変数をエクスポートします。 BITRISE_IDENTITY_TOKENには、トークンの関連情報が含まれています。これを使用して、アクセスしたいサービスと認証情報を交換します。
特定のサービスの専用ステップ
ザ・ OIDC アイデンティティートークンの取得 Step では任意のサービスの OIDC トークンを取得できますが、認証情報の交換は行いません。一部のサービスでは、プロセス全体を処理するステップを用意しています。
-
Google クラウドプラットフォーム (GCP) による認証: サービスアカウントキーを使用して Google 認証トークンを生成し、GCP に対して認証します。
-
アマゾンウェブサービス (AWS) による認証: AWS IAM ID プロバイダーに基づいて ID トークンを生成します。ガイドの全文はこちらでご覧いただけます AWS 向け OIDC.
OIDC トークンの情報
ビットライズはOIDCトークンに以下の情報を含んでいます。
制限事項
Bitriseは一般的なIDプロバイダーと見なされているため、AWSがトークンから保持しているクレームは2つだけです。 aud そして sub。これらはポリシーでのみ使用できます。
クレームフィールドの詳細については、 AWS ドキュメント。
|
|
|
|---|---|
|
|
カスタマイズ可能なオーディエンスフィールド |
|
|
ID トークンの作成をトリガーしたサブジェクト の中になります |
|
|
トークンの有効期限 |
|
|
トークンの生成時間 |
|
|
トークンを発行した人 |
|
|
トークンの固有識別子 |
|
|
現在の時刻 |
|
|
Git コミットハッシュ |
|
|
アプリに関連付けられている Git リポジトリの URL |
|
|
Git リポジトリの所有者 |
|
|
Git リポジトリスラッグ |
|
|
アプリスラッグ |
|
|
ワークスペーススラッグ |
|
|
どのエンティティがビルドをトリガーしたか |
|
|
構築中のブランチ |
|
|
PR ターゲットブランチ |
|
|
ビルドをトリガーしたタグ |
|
|
ビルド番号 |
|
|
トリガーされたワークフローの名前 |
OIDCによるビットライズへの認証
Bitriseは、外部OIDCトークンを使用してBitriseへの認証と短期間のBitriseの受信をサポートしています ワークスペースアクセストークン。発行されたトークンはBitriseのトラストポリシーと照合されます
Bitriseトークンを受け取ったサービスは、基本的に、トラストポリシーで定義された特定のアクションを実行できるワークスペースの一時的なメンバーになります。たとえば、特定のリポジトリの特定のブランチでトリガーされたビルドからデータを受け取ることができます
信託政策
OIDC 信頼ポリシーは、誰を信頼するか、どのような条件で、OIDC トークンを検証するかを定義します。Bitriseのトラストポリシーでは以下を定義しています
-
ビットライズが信頼するOIDC発行体です。当社のトラストポリシーに発行者として記載されていないOIDCプロバイダーからのクレームは自動的に拒否されます
-
有効期間が短いトークンの有効期間:有効期間。
-
アクセスレベル:ワークスペースとプロジェクトで付与される役割と権限。
-
トークンの照合ルール:照合する必要があるクレーム。たとえば、クレームにはリポジトリ、リポジトリのブランチ、トリガーすべきワークフローなどを含めることができます。マッチングルールは JSON 形式です。
OIDC トークンのリクエスト
ポリシーが正常に作成されると、Bitriseは固有のポリシーIDを自動的に生成します。このポリシー ID はすべてのトークンリクエストに含める必要があります
サービスがOIDCトークンを送信して有効期間の短いBitriseワークスペースアクセストークンをリクエストすると、Bitriseはリクエスト内のポリシーIDを対応する信頼ポリシーと照合し、その信頼ポリシーの一致ルールを確認します。ルールが OIDC トークンの要求と一致すれば、有効期間の短いトークンが付与されます