認証


builds for Red Hat OpenShift 1.3

ランタイム時の認証について

Red Hat OpenShift Documentation Team

概要

このドキュメントでは、ランタイム時の認証に関する情報を提供します。

第1章 ランタイム時の認証について

イメージを構築するとき、次のシナリオで認証を定義する必要が生じる場合があります。

  • コンテナーレジストリーに対する認証
  • Git からのソースコードの取得

認証は、必要な機密データが保存されるシークレットの定義を通じて行われます。

1.1. ビルドシークレットアノテーション

アノテーション build.shipwright.io/referenced.secret: "true" をビルドシークレットに追加できます。このアノテーションに基づいて、ビルドコントローラーは、ビルドシークレットの作成、更新、削除などのイベントがトリガーされたときに調整アクションを実行します。以下の例は、シークレットでのアノテーションの使用方法を示しています。

apiVersion: v1
data:
  .dockerconfigjson: <pull_secret> 
1

kind: Secret
metadata:
  annotations:
    build.shipwright.io/referenced.secret: "true" 
2

  name: secret-docker
type: kubernetes.io/dockerconfigjson
Copy to Clipboard Toggle word wrap
1
Base64 でエンコードされたプルシークレット
2
build.shipwright.io/referenced.secret アノテーションの値は true に設定します。

このアノテーションは、ビルドインスタンスで参照されないシークレットにフィルターを設定します。たとえば、シークレットにこのアノテーションがない場合は、そのシークレットに対してイベントがトリガーされても、ビルドコントローラーによる調整はありません。イベントのトリガーを調整して、ビルドコントローラーがビルド設定の検証を再トリガーできるようになり、依存関係が欠落しているかどうかが理解しやすくなります。

1.2. Git リポジトリーへの認証

Git リポジトリーに対して次のタイプの認証を定義できます。

  • Basic 認証
  • セキュアシェル (SSH) 認証

Build CR で両方のタイプの認証を使用して Git シークレットを設定することもできます。

1.2.1. Basic 認証

Basic 認証では、Git リポジトリーのユーザー名とパスワードを設定する必要があります。以下の例は、Git の Basic 認証の使用方法を示しています。

apiVersion: v1
kind: Secret
metadata:
  name: secret-git-basic-auth
  annotations:
    build.shipwright.io/referenced.secret: "true"
type: kubernetes.io/basic-auth 
1

stringData: 
2

  username: <plaintext_username>
  password: <plaintext_password>
Copy to Clipboard Toggle word wrap
1
Kubernetes シークレットのタイプ。
2
ユーザー名とパスワードをクリアテキストで保存するフィールド。

1.2.2. SSH 認証

SSH 認証では、使用する Git リポジトリープロバイダーのホスト名を指定するように Tekton アノテーションを設定する必要があります。たとえば、GitHub の場合は github.com、GitLab の場合は gitlab.com です。

以下の例は、Git での SSH 認証の使用方法を示しています。

apiVersion: v1
kind: Secret
metadata:
  name: secret-git-ssh-auth
  annotations:
    build.shipwright.io/referenced.secret: "true"
type: kubernetes.io/ssh-auth 
1

data:
  ssh-privatekey: |   
2

    # Insert ssh private key, base64 encoded
Copy to Clipboard Toggle word wrap
1
Kubernetes シークレットのタイプ。
2
Git への認証に使用される SSH 鍵の Base64 エンコード。この鍵は base64 ~/.ssh/id_rsa.pub コマンドを使用して生成できます。ここで、~/.ssh/id_rsa.pub は、Git への認証に通常使用される鍵のデフォルトの場所を示します。

1.2.3. Git シークレットの使用

関連する namespace でシークレットを作成したら、そのシークレットを Build カスタムリソース (CR) で参照できます。両方のタイプの認証で Git シークレットを設定できます。

次の例は、SSH 認証タイプでの Git シークレットの使用法を示しています。

apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
  name: buildah-golang-build
spec:
  source:
    git:
      url: git@gitlab.com:userjohn/newtaxi.git
      cloneSecret: secret-git-ssh-auth
Copy to Clipboard Toggle word wrap

以下の例は、Basic 認証タイプでの Git シークレットの使用法を示しています。

apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
  name: buildah-golang-build
spec:
  source:
    git:
      url: https://gitlab.com/userjohn/newtaxi.git
      cloneSecret: secret-git-basic-auth
Copy to Clipboard Toggle word wrap

1.3. コンテナーレジストリーへの認証

イメージをプライベートコンテナーレジストリーにプッシュするには、それぞれの namespace でシークレットを定義し、Build カスタムリソース (CR) で参照する必要があります。

手順

  1. 以下のコマンドを実行してシークレットを生成します。

    $ oc --namespace <namespace> create secret docker-registry <container_registry_secret_name> \
      --docker-server=<registry_host> \ 
    1
    
      --docker-username=<username> \ 
    2
    
      --docker-password=<password> \ 
    3
    
      --docker-email=<email_address>
    Copy to Clipboard Toggle word wrap
    1
    <registry_host> 値は、https://<registry_server>/<registry_host> という形式の URL を示します。
    2
    <username> 値はユーザー ID です。
    3
    <password> 値には、コンテナーレジストリーのパスワードまたはアクセストークンを指定できます。
  2. 次のコマンドを実行して、シークレットにアノテーションを付けます。

    $ oc --namespace <namespace> annotate secrets <container_registry_secret_name> build.shipwright.io/referenced.secret='true'
    Copy to Clipboard Toggle word wrap
  3. spec.output.pushSecret フィールドの値を Build CR のシークレット名に設定します。

    apiVersion: shipwright.io/v1beta1
    kind: Build
    metadata:
      name: buildah-golang-build
      # ...
      output:
        image: <path_to_image>
        pushSecret: <container_registry_secret_name>
    Copy to Clipboard Toggle word wrap

1.4. ロールベースのアクセス制御

リリースデプロイメント YAML ファイルには、Builds オブジェクトを使用するための 2 つのクラスター全体のロールが含まれています。次のロールがデフォルトでインストールされます。

  • shpwright-build-aggregate-view: BuildStrategyClusterBuildStrategyBuildBuildRun などの Build リソースへの読み取りアクセスを許可します。このロールは Kubernetes view ロールに集約されます。
  • shipwright-build-aggregate-edit: namespace レベルで設定されたビルドリソースへの書き込みアクセスを許可します。ビルドリソースには、BuildStrategyBuild、および BuildRun が含まれます。すべての ClusterBuildStrategy リソースに読み取りアクセスが付与されます。このロールは、Kubernetes の edit および admin ロールに集約されます。

ClusterBuildStrategy リソースへの書き込みアクセス権が割り当てられているのはクラスター管理者のみです。この設定を変更するには、これらの権限を持つ別の Kubernetes ClusterRole ロールを作成し、そのロールを適切なユーザーにバインドします。

Legal Notice

Copyright © 2025 Red Hat

OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).

Modified versions must remove all Red Hat trademarks.

Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.

Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.

Linux® is the registered trademark of Linus Torvalds in the United States and other countries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.

MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.

Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.

The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat