1.4. 追加の OpenID Connect プロバイダーの設定
システム管理者は、Red Hat の Trusted Artifact Signer サービスで使用するために、さまざまな OpenID Connect (OIDC) プロバイダーを設定できます。ユーザーを認証するために、次の OIDC プロバイダーを設定できます。
- Red Hat build of Keycloak
- Red Hat Single Sign-on (SSO)
- Amazon Security Token Service (STS)
- Microsoft Entra ID
- GitHub
1.4.1. Google を Trusted Artifact Signer の OpenID Connect プロバイダーとして設定する手順 リンクのコピーリンクがクリップボードにコピーされました!
Google OAuth 2.0 を Red Hat の Trusted Artifact Signer (RHTAS) サービスの OpenID Connect (OIDC) プロバイダーとして使用できます。RHTAS のデプロイメント中、または後で Google OAuth を設定するかどうかを決定できます。
同じ設定で複数の異なる OIDC プロバイダーを定義できます。
前提条件
- Red Hat OpenShift Container Platform 4.15 以降。
-
cluster-admin
ロールでの OpenShift Web コンソールへのアクセス。 -
oc
およびpodman
バイナリーがインストールされたワークステーション。 Google Cloud Console から、次の設定を使用して OAuth クライアント ID を作成している。
- アプリケーションタイプを “Web Application” に設定します。
- 承認されたリダイレクト URI には http://localhost/auth/callback が含まれている必要があります。
手順
ワークステーションでターミナルを開き、OpenShift にログインします。
構文
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記OpenShift Web コンソールからコマンドラインで使用するログイントークンと URL を確認できます。OpenShift Web コンソールにログインします。ユーザー名をクリックし、Copy login command をクリックします。入力を求められた場合はユーザー名とパスワードをもう一度入力し、Display Token をクリックしてコマンドを表示します。
RHTAS 設定を更新します。
Securesign
リソースを開いて編集します。構文
oc edit Securesign NAME -n NAMESPACE
oc edit Securesign NAME -n NAMESPACE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
oc edit Securesign securesign-sample -n trusted-artifact-signer
oc edit Securesign securesign-sample -n trusted-artifact-signer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記RHTAS インストール用に作成されたプロジェクト名を namespace として使用する必要があります。
OIDCIssuers
セクションで、Google クライアント ID、発行者の URL を含む新しいサブセクションを追加し、Type
値をemail
に設定します。構文
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Google クライアント識別子を
ClientID
フィールドに追加します。- 変更を保存し、エディターを終了します。数秒後、Operator は RHTAS ソフトウェアスタックを自動的に再設定します。
OIDC 発行者とクライアント ID 環境変数を Google を使用するように変更します。
例
export OIDC_ISSUER_URL=https://accounts.google.com export COSIGN_OIDC_CLIENT_ID="314919563931-35zke44ouf2oiztjg7v8o8c2ge9usnd1.apps.googleexample.com"
export OIDC_ISSUER_URL=https://accounts.google.com export COSIGN_OIDC_CLIENT_ID="314919563931-35zke44ouf2oiztjg7v8o8c2ge9usnd1.apps.googleexample.com"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Google コンソールからプレーンテキストファイルにシークレットをコピーして貼り付けます。
構文
echo SECRET > my-google-client-secret
echo SECRET > my-google-client-secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHTAS サービスがすでに実行されている場合は、テストコンテナーイメージに署名して更新された設定を確認できます。
空のコンテナーイメージを作成します。
例
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1h
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 空のコンテナーイメージを
ttl.sh
一時レジストリーにプッシュします。例
podman push ttl.sh/rhtas/test-image:1h
podman push ttl.sh/rhtas/test-image:1h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 一時的な Docker ファイルを削除します。
例
rm ./tmp.Dockerfile
rm ./tmp.Dockerfile
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーイメージに署名します。
構文
cosign sign -y --oidc-client-secret-file=SECRET_FILE IMAGE_NAME:TAG
cosign sign -y --oidc-client-secret-file=SECRET_FILE IMAGE_NAME:TAG
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
cosign sign -y --oidc-client-secret-file=my-google-client-secret ttl.sh/rhtas/test-image:1h
cosign sign -y --oidc-client-secret-file=my-google-client-secret ttl.sh/rhtas/test-image:1h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Web ブラウザーが開いて、コンテナーイメージをメールアドレスで署名できます。
1.4.2. Red Hat SSO を Trusted Artifact Signer の OpenID Connect プロバイダーとして設定する手順 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Single Sign-On (SSO) を、Red Hat Trusted Artifact Signer (RHTAS) サービスの OpenID Connect プロバイダーとして使用できます。これにより、アプリケーションと安全なサービスに Keycloak 認証環境が提供されます。
前提条件
- Red Hat OpenShift Container Platform 4.15 以降。
-
cluster-admin
ロールでの OpenShift Web コンソールへのアクセス。 - Keycloak PostgreSQL データベース用に 1 GB のコンテナーストレージを使用できる。
-
oc
バイナリーがインストールされているワークステーション。
手順
-
cluster-admin
ロールを持つユーザーで OpenShift Web コンソールにログインします。 Keycloak サービスをデプロイする新規プロジェクトを作成します。
- Administrator パースペクティブのナビゲーションメニューから Home を展開し、Projects をクリックします。
- Create Project ボタンをクリックします。
-
新しい project name は
keycloak-system
で、Create ボタンをクリックします。
- ナビゲーションメニューから Operators を展開し、OperatorHub をクリックします。
- 検索フィールドに sso と入力し、Red Hat Single Sign-on タイルをクリックします。
- Install ボタンをクリックして、Operator の詳細を表示します。
-
まだ設定されていない場合は、Installed Namespace ドロップダウンメニューから
keycloak-system
を選択します。 - Install Operator ページで Install をクリックし、インストールが完了するまで待ちます。
- インストールが完了したら、View Operator をクリックします。
ワークステーションターミナルから、OpenShift クラスターにログインします。
構文
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記OpenShift Web コンソールからコマンドラインで使用するログイントークンと URL を確認できます。OpenShift Web コンソールにログインします。ユーザー名をクリックし、Copy login command をクリックします。入力を求められた場合はユーザー名とパスワードをもう一度入力し、Display Token をクリックしてコマンドを表示します。
Keycloak プロジェクトに切り替えます。
例
oc project keycloak-system
oc project keycloak-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Keycloak インスタンスを作成します。
例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Keycloak レルムを作成します。
例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Keycloak クライアントを作成します。
例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Keycloak ユーザーを作成します。
例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザー名、ユーザーのメールアドレス、パスワードを設定するか、秘密オブジェクトを参照します。
- OpenShift Web コンソールに戻り、All instances タブをクリックして監視し、Keycloak システムが正常に初期化されるまで待ちます。
1.4.3. Red Hat build of Keycloak を Trusted Artifact Signer の OpenID Connect プロバイダーとして設定する手順 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat’s build of Keycloak (RHBK) を Red Hat Trusted Artifact Signer (RHTAS) サービスの OpenID Connect (OIDC) として設定できます。この手順では、RHBK と RHTAS を統合する方法を説明します。
同じ SecureSign 設定で、Fulcio の複数の異なる OIDC プロバイダーを定義できます。
前提条件
手順
-
cluster-admin
ロールを持つユーザーで OpenShift Web コンソールにログインします。 Keycloak サービスをデプロイする新規プロジェクトを作成します。
- Administrator パースペクティブのナビゲーションメニューから Home を展開し、Projects をクリックします。
- Create Project ボタンをクリックします。
-
新しいプロジェクト名は
keycloak-system
で、Create ボタンをクリックします。
永続データを保存するために Keycloak が使用する PostgreSQL インスタンスをデプロイします。
重要Keycloak で使用するデータベースがすでに存在する場合は、データベースインスタンスに対応する
Secret
リソースのusername
、password
およびdatabase
名の値を置き換えます。PostgreSQL サービスと StatefulSet の作成手順をスキップして、次の手順に進むことができます。データベース情報を保存するための
Secret
リソースを作成します。- ナビゲーションメニューから Workloads を展開し、Secrets をクリックします。
-
Project ドロップダウンメニューから
keycloak-system
を選択します。 - Create ドロップダウンメニューをクリックし、Key/Value secret を選択します。
-
Secret name フィールドに
postgresql-db
と入力します。 -
Key フィールドに
username
を入力します。 -
Value フィールドに
keycloak
と入力します。これは、Keycloak が PostgreSQL データベースインスタンスへの認証に使用するユーザー名です。 - 別のキーと値のペアを追加するには、Add key/value リンクをクリックします。
-
Key フィールドに
password
を入力します。 - Value フィールドに任意のパスワードを入力します。これは、Keycloak が PostgreSQL データベースインスタンスへの認証に使用するパスワードです。
- 別のキーと値のペアを追加するには、Add key/value リンクをクリックします。
-
Key フィールドに
database
を入力します。 -
Value フィールドに
keycloak
と入力します。これは、PostgreSQL データベースインスタンス内に Keycloak データを格納するためのデータベースの名前です。 - Create ボタンをクリックします。
PostgreSQL サービスと StatefulSet を作成します。
- + アイコンをクリックします。
- Service および StatefulSet YAML 設定テキスト をコピーし、Import YAML ページでテキストエディターボックスに テキストを貼り付けます。
-
Create ボタンをクリックして、Service と StatefulSet を
keycloak-system
プロジェクトに追加します。
ワークステーションからターミナルを開き、OpenShift クラスターにログインします。
構文
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記OpenShift Web コンソールからコマンドラインで使用するログイントークンと URL を確認できます。OpenShift Web コンソールにログインします。ユーザー名をクリックし、Copy login command をクリックします。入力を求められた場合はユーザー名とパスワードをもう一度入力し、Display Token をクリックしてコマンドを表示します。
Transport Layer Security (TLS) 証明書と対応する秘密鍵を含めて、新しい
Secret
リソースを作成します。構文
oc create secret tls SECRET_NAME -n NAMESPACE --cert CERTIFICATE_FILE_NAME --key PRIVATE_KEY_FILE_NAME
oc create secret tls SECRET_NAME -n NAMESPACE --cert CERTIFICATE_FILE_NAME --key PRIVATE_KEY_FILE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
oc create secret tls keycloak-tls -n keycloak-system --cert certificate.pem --key key.pem
oc create secret tls keycloak-tls -n keycloak-system --cert certificate.pem --key key.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記OpenShift のサービス提供証明書は、Keycloak で使用する TLS 証明書の生成と管理を自動化できます。詳細は 付録 を参照してください。
- OpenShift Web コンソールで、ナビゲーションメニューから Operator を展開し、OperatorHub をクリックします。
- 検索フィールドに keycloak と入力し、認定済みの Red Hat カタログから Keycloak Operator タイルをクリックします。
- Install ボタンをクリックして、Operator の詳細を表示します。
-
Install Operator ページで、Installed Namespace ドロップダウンメニューから
keycloak-system
を選択し、Install ボタンをクリックします。インストールが完了するまで待ちます。 - インストールが完了したら、View Operator ボタンをクリックします。
- Keycloak タイルで Create instance をクリックします。
Create Keycloak ページで、YAML view を選択します。
-
name
の行で、example-keycloak
をカスタム名 (例:keycloak
) に置き換えます。 ホスト名は、
hostname
プロパティー内で明示的に指定することも、他のルートと同様に自動的に生成することもできます。hostname
の行で、example.org
をカスタムホスト名に置き換えます。注記OpenShift で Keycloak インスタンスのホスト名を生成するために必要な手順は、付録 を参照してください。
spec
セクションの下に、データベースの詳細を追加します。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow また、
spec
セクションのhttp
プロパティーに、TLS 証明書を含むSecret
リソースの名前を指定します。例
spec: ... http: tlsSecret: keycloak-tls ...
spec: ... http: tlsSecret: keycloak-tls ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Create ボタンをクリックします。
-
- Networking ナビゲーションメニューを展開し、Routes をクリックします。
- Keycloak 管理コンソールを開くには、Keycloak インスタンスに関連付けられたルートへのリンクをクリックします。
-
admin
ユーザーのデフォルトの認証情報は keycloak-initial-admin という Secret に保存されます。パスワードを見つけるには、Workloads ナビゲーションメニューを展開し、Secrets をクリックします。 - keycloak-initial-admin シークレットを選択します。
-
Data セクションでパスワードキーを見つけて、
アイコンをクリックします。
-
Keycloak 管理コンソールのログインページで、ユーザー名として
admin
と入力し、前の手順の内容をパスワードとして貼り付けます。 trusted-artifact-signer
という新しいレルムを作成します。- ナビゲーションメニューで、Red Hat build of Keycloak ドロップダウンメニューを選択します。
- Create Realm を選択します。
-
リソース名 として
trusted-artifact-signer
と入力します。 - Create をクリックして新しいレルムを作成します。
新しい ユーザー を作成します。新しいユーザーは、Keycloak 管理コンソールにログインでき、RHTAS を使用してコンテナーとコミットに署名することもできます。
- ナビゲーションメニューの Manage セクションで、Clients を選択します。
- Create Client ボタンをクリックします
-
Client Id フィールドに、
trusted-artifact-signer
と入力します。 - オプションで、対応するフィールドに 名前 と 説明 を入力できます。
- Next をクリックします。
- 新しいクライアント作成プロセスの Capability Config ステップでデフォルトオプションを確定します。
- Next をクリックします。
-
Valid redirect URIs フィールドに
*
と入力します。 - Save をクリックしてクライアントを作成します。
-
ナビゲーションメニューの Configure セクションで、Realm Settings を選択して、
trusted-artifact-signer
レルムの Issuer URL を見つけます。 - Endpoints の横にある OpenID Endpoint Configuration リンクをクリックします。
-
issuer
プロパティーから URL をコピーします。 RHTAS の
SecureSign
リソースの.spec.fulcio.config.OIDCIssuers
セクションで、CLIENT_ID をtrusted-artifact-signer
に置き換え、URL コンテンツを貼り付けてRHBK_REALM_ISSUER_URL を置き換えます。構文
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.4. Amazon STS を Trusted Artifact Signer の OpenID Connect プロバイダーとして設定する手順 リンクのコピーリンクがクリップボードにコピーされました!
Amazon の Security Token Service (STS) を、Red Hat Trusted Artifact Signer (RHTAS) サービスの OpenID Connect (OIDC) プロバイダーとして使用できます。RHTAS のデプロイメント時に、または後で Amazon STS を設定できます。
同じ設定で複数の異なる OIDC プロバイダーを定義できます。
前提条件
- Red Hat OpenShift Container Platform 4.15 以降。
-
cluster-admin
ロールでの OpenShift Web コンソールへのアクセス。 -
oc
、podman
、aws
バイナリーがインストールされたワークステーション。 - OpenShift 環境用に管理対象の Amazon Web Service (AWS) リソースを有効にする。
完全な権限を持つ 作成された Amazon アイデンティティーおよびアクセス管理 (IAM) ユーザー。これにより、IAM 操作の実行が可能になります。
- このユーザーのアクセスキーを作成している。
手順
ワークステーションでターミナルを開き、OpenShift にログインします。
構文
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記OpenShift Web コンソールからコマンドラインで使用するログイントークンと URL を確認できます。OpenShift Web コンソールにログインします。ユーザー名をクリックし、Copy login command をクリックします。入力を求められた場合はユーザー名とパスワードをもう一度入力し、Display Token をクリックしてコマンドを表示します。
AWS OIDC プロバイダー URL を検索します。
例
oc get authentication cluster -o jsonpath='{.spec.serviceAccountIssuer}'
oc get authentication cluster -o jsonpath='{.spec.serviceAccountIssuer}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHTAS の設定を更新します。
Securesign
リソースを開いて編集します。構文
oc edit Securesign NAME -n NAMESPACE
oc edit Securesign NAME -n NAMESPACE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
oc edit Securesign securesign-sample -n trusted-artifact-signer
oc edit Securesign securesign-sample -n trusted-artifact-signer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記RHTAS インストール用に作成されたプロジェクト名を namespace として使用する必要があります。
OIDCIssuers
セクションで、AWS STS クライアント識別子、発行者の URL を含む新しいサブセクションを追加し、Type
の値をkubernetes
に設定します。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存し、エディターを終了します。数秒後、Operator は RHTAS ソフトウェアスタックを自動的に再設定します。
アクセスキー、シークレットキー、デフォルトのリージョン、および出力形式を入力して、AWS コマンドラインツールを設定します。
例
aws configure
aws configure
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の環境変数を設定します。
例
export account_id=$(aws sts get-caller-identity --query "Account" --output text) export oidc_provider="$(oc get authentication cluster -o jsonpath='{.spec.serviceAccountIssuer}' | cut -d '/' -f3-)" export role_name=rhtas-sts export namespace=rhtas-sts export service_account=cosign-sts
export account_id=$(aws sts get-caller-identity --query "Account" --output text) export oidc_provider="$(oc get authentication cluster -o jsonpath='{.spec.serviceAccountIssuer}' | cut -d '/' -f3-)" export role_name=rhtas-sts export namespace=rhtas-sts export service_account=cosign-sts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しく作成された IAM ロールに関連付けられる信頼ポリシーを作成します。
例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 信頼ポリシーを使用して、RHTAS サービスの新しい IAM ロールを作成します。
例
aws iam create-role --role-name rhtas-sts --assume-role-policy-document file://trust-relationship.json --description "Red Hat Trusted Artifact Signer STS Role"
aws iam create-role --role-name rhtas-sts --assume-role-policy-document file://trust-relationship.json --description "Red Hat Trusted Artifact Signer STS Role"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow STS が有効になっている OpenShift クラスターで、新しいプロジェクト namespace を作成します。
構文
oc new-project NAMESPACE
oc new-project NAMESPACE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
oc new-project rhtas-sts
oc new-project rhtas-sts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow IAM ロールを一時的に設定して、OpenShift プロジェクトの namespace でワークロードを実行するサービスアカウントを作成します。
サービスアカウントマニフェストを作成します。
例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスアカウントマニフェストを OpenShift に適用します。
例
oc apply -f service_account.yaml
oc apply -f service_account.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
イメージレジストリーに、コンテナーイメージに署名するデプロイメントワークロードを新たに作成します。
デプロイメントマニフェストを作成します。
例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイメントマニフェストを OpenShift に適用します。
例
oc apply -f deployment.yaml
oc apply -f deployment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
署名するテストコンテナーイメージを作成します。
空のコンテナーイメージを作成します。
例
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1h
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 空のコンテナーイメージを
ttl.sh
一時レジストリーにプッシュします。例
podman push ttl.sh/rhtas/test-image:1h
podman push ttl.sh/rhtas/test-image:1h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 一時的な Docker ファイルを削除します。
例
rm ./tmp.Dockerfile
rm ./tmp.Dockerfile
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
テストコンテナーイメージに署名して検証することで、設定を検証します。
実行中の Pod 内でリモートシェルセッションを開きます。
構文
oc rsh -n NAMESPACE deployment/cosign-sts env IMAGE=IMAGE_NAME:TAG /bin/sh
oc rsh -n NAMESPACE deployment/cosign-sts env IMAGE=IMAGE_NAME:TAG /bin/sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
oc rsh -n rhtas-sts deployment/cosign-sts env IMAGE=ttl.sh/rhtas/test-image:1h /bin/sh
oc rsh -n rhtas-sts deployment/cosign-sts env IMAGE=ttl.sh/rhtas/test-image:1h /bin/sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーイメージに署名します。
例
cosign sign -y --identity-token=$(cat $AWS_WEB_IDENTITY_TOKEN_FILE) ttl.sh/rhtas/test-image:1h
cosign sign -y --identity-token=$(cat $AWS_WEB_IDENTITY_TOKEN_FILE) ttl.sh/rhtas/test-image:1h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 署名済みコンテナーイメージを確認します。
例
cosign verify --certificate-identity=https://kubernetes.io/namespaces/$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)/serviceaccounts/cosign-sts --certificate-oidc-issuer=$COSIGN_CERTIFICATE_OIDC_ISSUER ttl.sh/rhtas/test-image:1h
cosign verify --certificate-identity=https://kubernetes.io/namespaces/$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)/serviceaccounts/cosign-sts --certificate-oidc-issuer=$COSIGN_CERTIFICATE_OIDC_ISSUER ttl.sh/rhtas/test-image:1h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.5. GitHub を Trusted Artifact Signer の OpenID Connect プロバイダーとして設定する手順 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Trusted Artifact Signer (RHTAS) サービスの OpenID Connect (OIDC) プロバイダーとして Red Hat のシングルサインオン (SSO) サービスと連携する場合は、GitHub OAuth 2.0 を使用できます。この手順では、OpenShift 上の既存の Red Hat SSO デプロイメントと GitHub OAuth を統合する方法を説明します。
同じ設定で複数の異なる OIDC プロバイダーを定義できます。
前提条件
- Red Hat OpenShift Container Platform 4.15 以降。
- 実行中の Red Hat SSO インスタンス。
-
oc
バイナリーがインストールされているワークステーション。 GitHub OAuth アプリを作成 し、アプリケーションを登録した後、クライアント識別子とシークレットの値をメモします。
重要新しい GitHub OAuth アプリケーションを登録するときは、ホームページ URL と 認証コールバック URL を指定する必要があります。これらの両方のフィールドにプレースホルダー値を入力します (例:
https://localhost:8080
)。この手順の後半では、これらのフィールドの目的の値を使用して GitHub OAuth アプリケーションを変更します。
手順
ワークステーションでターミナルを開き、OpenShift にログインします。
構文
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記OpenShift Web コンソールからコマンドラインで使用するログイントークンと URL を確認できます。OpenShift Web コンソールにログインします。ユーザー名をクリックし、Copy login command をクリックします。入力を求められた場合はユーザー名とパスワードをもう一度入力し、Display Token をクリックしてコマンドを表示します。
Red Hat SSO コンソールにログインします。
コマンドラインから Red Hat SSO コンソール URL を見つけます。
例
oc get routes -n keycloak-system keycloak -o jsonpath='https://{.spec.host}'
oc get routes -n keycloak-system keycloak -o jsonpath='https://{.spec.host}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Red Hat SSO コンソールの URL をコピーして、Web ブラウザーに貼り付けます。
- Administration Console をクリックします。
コマンドラインから
admin
パスワードを取得します。例
oc get secret/credential-keycloak -n keycloak-system -o jsonpath='{ .data.ADMIN_PASSWORD }' | base64 -d
oc get secret/credential-keycloak -n keycloak-system -o jsonpath='{ .data.ADMIN_PASSWORD }' | base64 -d
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドの出力をコピーします。
-
Web ブラウザーから
admin
ユーザーとしてログインし、対応するフィールドにパスワードを貼り付けます。Sign In ボタンをクリックします。
- ナビゲーションメニューのドロップダウンからレルムを選択します。
GitHub アイデンティティープロバイダーを追加します。
- ナビゲーションメニューから、Identity Providers をクリックします。
- Add provider… ドロップダウンメニューから、GitHub を選択します。
- GitHub OAuth クライアント識別子を Client ID フィールドに追加します。
- GitHub OAuth クライアントシークレットを Client Secret フィールドに追加します。
- Trust Email オプションを on にします。
- Save ボタンをクリックします。
新しく作成されたアイデンティティープロバイダーにアイデンティティープロバイダーマッパーを追加します。
- Mapper タブをクリックします。
- Create ボタンをクリックします。
- 新しいマッパーに Name を付けます。
- Mapper Type を Hardcoded Attribute に変更します。
-
User Attribute フィールドを
emailVerified
に設定します。 -
User Attribute Value フィールドを
true
に設定します。 - Save ボタンをクリックします。
-
GitHub Identity Provider Settings ページから、Redirect URI 値をコピーし、GitHub OAuth アプリケーション Authorization Callback URL フィールドに貼り付けます。また、同じ値を Homepage URL フィールドに貼り付けますが、URL 文字列の
broker/github/endpoint
の部分を削除します。 - Update Application をクリックします。GitHub を OIDC プロバイダーとして使用して、コミット や コンテナー に署名できるようになりました。
- アーティファクトに署名すると、Web ブラウザーが開き、Red Hat SSO アカウントにサインインするように求められます。GitHub ボタンをクリックして、認証情報でサインインします。
- Authorize ボタンをクリックして、Red Hat SSO が GitHub ユーザーの詳細にアクセスできるようにします。
1.4.6. Microsoft Entra ID を Trusted Artifact Signer の OpenID Connect プロバイダーとして設定する リンクのコピーリンクがクリップボードにコピーされました!
Microsoft Entra ID を、Red Hat の Trusted Artifact Signer (RHTAS) サービスの OpenID Connect (OIDC) プロバイダーとして使用できます。Microsoft Entra ID は RHTAS のデプロイ中または後に設定できます。
Microsoft Entra ID を RHTAS に統合するのにサブスクリプションは必要ありません。
同じ設定で複数の異なる OIDC プロバイダーを定義できます。
前提条件
- Red Hat OpenShift Container Platform 4.15 以降。
- リソースを作成する権限を持つ Microsoft Azure アカウント
- アーティファクトに署名するユーザーの Azure 検証済みメールアドレス
- Microsoft Azure コマンドラインインターフェイスへのアクセス
-
oc
、cosign
、podman
、az
バイナリーがインストールされたワークステーション
手順
- ワークステーションでターミナルを開きます。
クライアントを表す Microsoft Entra ID 内にアプリケーション登録を作成します。
例
export RHTAS_APP_REGISTRATION=$(az ad app create --display-name=rhtas --web-redirect-uris=http://localhost:0/auth/callback --enable-id-token-issuance --query appId -o tsv)
export RHTAS_APP_REGISTRATION=$(az ad app create --display-name=rhtas --web-redirect-uris=http://localhost:0/auth/callback --enable-id-token-issuance --query appId -o tsv)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーがアプリケーション登録を使用して ID トークンを取得できるようにする新しいクライアントシークレットを作成します。
例
export RHTAS_APP_REGISTRATION_CLIENT_SECRET=$(az ad app credential reset --id=$RHTAS_APP_REGISTRATION --display-name="RHTAS Client Secret" -o tsv --query 'password')
export RHTAS_APP_REGISTRATION_CLIENT_SECRET=$(az ad app credential reset --id=$RHTAS_APP_REGISTRATION --display-name="RHTAS Client Secret" -o tsv --query 'password')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記デフォルトでは、クライアントシークレットの有効期間は 1 年間のみです。この値は
--years
または--end-date
フラグを使用してカスタマイズできます。新しいクレームマッピングポリシーを作成して、
email_verified
という名前の新しい JWT クレームを定義し、静的な値true
を使用します。例
az rest -m post --headers Content-Type=application/json --uri https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies --body '{"definition": ["{\"ClaimsMappingPolicy\":{\"Version\":1,\"IncludeBasicClaimSet\":\"true\", \"ClaimsSchema\":[{\"value\":\"true\",\"JwtClaimType\":\"email_verified\"}]}}"],"displayName": "EmailVerified"}'
az rest -m post --headers Content-Type=application/json --uri https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies --body '{"definition": ["{\"ClaimsMappingPolicy\":{\"Version\":1,\"IncludeBasicClaimSet\":\"true\", \"ClaimsSchema\":[{\"value\":\"true\",\"JwtClaimType\":\"email_verified\"}]}}"],"displayName": "EmailVerified"}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーション登録オブジェクト ID を取得します。
例
export RHTAS_APP_REGISTRATION_OBJ_ID=$(az ad app show --id $RHTAS_APP_REGISTRATION --output tsv --query id)
export RHTAS_APP_REGISTRATION_OBJ_ID=$(az ad app show --id $RHTAS_APP_REGISTRATION --output tsv --query id)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーション登録のマニフェストを更新します。
例
az rest --method PATCH --uri https://graph.microsoft.com/v1.0/applications/${RHTAS_APP_REGISTRATION_OBJ_ID} --headers 'Content-Type=application/json' --body "{\"api\":{\"acceptMappedClaims\":true}}"
az rest --method PATCH --uri https://graph.microsoft.com/v1.0/applications/${RHTAS_APP_REGISTRATION_OBJ_ID} --headers 'Content-Type=application/json' --body "{\"api\":{\"acceptMappedClaims\":true}}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいサービスプリンシパルを作成し、それをアプリケーション登録に関連付けます。
例
export SERVICE_PRINCIPAL_ID=$(az ad sp create --id=${RHTAS_APP_REGISTRATION} -o tsv --query 'id')
export SERVICE_PRINCIPAL_ID=$(az ad sp create --id=${RHTAS_APP_REGISTRATION} -o tsv --query 'id')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クレームマッピングポリシー ID を取得します。
例
export CLAIM_MAPPING_POLICY_ID=$(az rest --uri https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies -o tsv --query "value[?displayName=='EmailVerified'] | [0].id")
export CLAIM_MAPPING_POLICY_ID=$(az rest --uri https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies -o tsv --query "value[?displayName=='EmailVerified'] | [0].id")
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クレームマッピングポリシーをサービスプリンシパルに関連付けます。
例
az rest -m post --headers Content-Type=application/json --uri "https://graph.microsoft.com/v1.0/servicePrincipals/${SERVICE_PRINCIPAL_ID}/claimsMappingPolicies/\$ref" --body "{\"@odata.id\": \"https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies/${CLAIM_MAPPING_POLICY_ID}\"}"
az rest -m post --headers Content-Type=application/json --uri "https://graph.microsoft.com/v1.0/servicePrincipals/${SERVICE_PRINCIPAL_ID}/claimsMappingPolicies/\$ref" --body "{\"@odata.id\": \"https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies/${CLAIM_MAPPING_POLICY_ID}\"}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow テナント ID を取得します。
例
export TENANT_ID=$(az account show -o tsv --query tenantId)
export TENANT_ID=$(az account show -o tsv --query tenantId)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OIDC エンドポイントを取得します。
例
export ENTRA_ID_OIDC_ENDPOINT=$(echo https://login.microsoftonline.com/${TENANT_ID}/v2.0)
export ENTRA_ID_OIDC_ENDPOINT=$(echo https://login.microsoftonline.com/${TENANT_ID}/v2.0)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHTAS 設定を更新します。
Securesign
リソースを開いて編集します。構文
oc edit Securesign NAME -n NAMESPACE
oc edit Securesign NAME -n NAMESPACE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
oc edit Securesign securesign-sample -n trusted-artifact-signer
oc edit Securesign securesign-sample -n trusted-artifact-signer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記RHTAS インストール用に作成されたプロジェクト名を namespace として使用する必要があります。
OIDCIssuers
セクションで、クライアント ID、発行者の URL を含む新しいサブセクションを追加し、Type
値をemail
に設定します。構文
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存し、エディターを終了します。数秒後、Operator は RHTAS ソフトウェアスタックを自動的に再設定します。
ローカルクライアントシークレットファイルを作成します。
例
echo $RHTAS_APP_REGISTRATION_CLIENT_SECRET > rhtas-entra-id-client-secret
echo $RHTAS_APP_REGISTRATION_CLIENT_SECRET > rhtas-entra-id-client-secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アーティファクトに署名するためのシェル環境を設定します。
例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 署名のためにローカルマシンを初期化します。
例
cosign initialize
$ cosign initialize
Copy to Clipboard Copied! Toggle word wrap Toggle overflow テストコンテナーイメージに署名して、更新された設定を確認します。
空のコンテナーイメージを作成します。
例
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1h
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 空のコンテナーイメージを
ttl.sh
一時レジストリーにプッシュします。例
podman push ttl.sh/rhtas/test-image:1h
podman push ttl.sh/rhtas/test-image:1h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 一時的な Docker ファイルを削除します。
例
rm ./tmp.Dockerfile
rm ./tmp.Dockerfile
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーイメージに署名します。
構文
cosign sign -y --oidc-client-secret-file=SECRET_FILE IMAGE_NAME:TAG
cosign sign -y --oidc-client-secret-file=SECRET_FILE IMAGE_NAME:TAG
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
cosign sign -y --oidc-client-secret-file=rhtas-entra-id-client-secret ttl.sh/rhtas/test-image:1h
cosign sign -y --oidc-client-secret-file=rhtas-entra-id-client-secret ttl.sh/rhtas/test-image:1h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Web ブラウザーが開いて、コンテナーイメージをメールアドレスで署名できます。