3.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.13 以降
  • リソースを作成する権限を持つ Microsoft Azure アカウント
  • アーティファクトに署名するユーザーの Azure 検証済みメールアドレス
  • Microsoft Azure コマンドラインインターフェイスへのアクセス
  • occosignpodmanaz バイナリーがインストールされたワークステーション

手順

  1. ワークステーションでターミナルを開きます。
  2. クライアントを表す 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)

  3. ユーザーがアプリケーション登録を使用して 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')

    注記

    デフォルトでは、クライアントシークレットの有効期間は 1 年間のみです。この値は --years または --end-date フラグを使用してカスタマイズできます。

  4. 新しいクレームマッピングポリシーを作成して、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"}'

  5. アプリケーション登録オブジェクト ID を取得します。

    $ export RHTAS_APP_REGISTRATION_OBJ_ID=$(az ad app show --id $RHTAS_APP_REGISTRATION --output tsv --query id)

  6. アプリケーション登録のマニフェストを更新します。

    $ 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}}"

  7. 新しいサービスプリンシパルを作成し、それをアプリケーション登録に関連付けます。

    $ export SERVICE_PRINCIPAL_ID=$(az ad sp create --id=${RHTAS_APP_REGISTRATION} -o tsv --query 'id')

  8. クレームマッピングポリシー 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")

  9. クレームマッピングポリシーをサービスプリンシパルに関連付けます。

    $ 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}\"}"

  10. テナント ID を取得します。

    $ export TENANT_ID=$(az account show -o tsv --query tenantId)

  11. OIDC エンドポイントを取得します。

    $ export ENTRA_ID_OIDC_ENDPOINT=$(echo https://login.microsoftonline.com/${TENANT_ID}/v2.0)

  12. RHTAS 設定を更新します。

    1. Securesign リソースを開いて編集します。

      構文

      oc edit Securesign NAME -n NAMESPACE

      $ oc edit Securesign securesign-sample -n trusted-artifact-signer

      注記

      RHTAS インストール用に作成されたプロジェクト名を namespace として使用する必要があります。

    2. OIDCIssuers セクションで、クライアント ID、発行者の URL を含む新しいサブセクションを追加し、Type 値を email に設定します。

      構文

      ...
      OIDCIssuers:
        - Issuer: "${ENTRA_ID_OIDC_ENDPOINT}"
          IssuerURL: "${ENTRA_ID_OIDC_ENDPOINT}"
          ClientID: "${RHTAS_APP_REGISTRATION}"
          Type: email
      ...

    3. 変更を保存し、エディターを終了します。数秒後、Operator は RHTAS ソフトウェアスタックを自動的に再設定します。
  13. ローカルクライアントシークレットファイルを作成します。

    $ echo $RHTAS_APP_REGISTRATION_CLIENT_SECRET > rhtas-entra-id-client-secret

  14. アーティファクトに署名するためのシェル環境を設定します。

    $ export TUF_URL=$(oc get tuf -n trusted-artifact-signer -o jsonpath='{.items[0].status.url}')
    $ export OIDC_ISSUER_URL=$(oc get securesign -n trusted-artifact-signer rhtas -o jsonpath='{ .spec.fulcio.config.OIDCIssuers[0].Issuer }')
    $ export COSIGN_REKOR_URL=$(oc get rekor -o jsonpath='{.items[0].status.url}' -n trusted-artifact-signer)
    $ export COSIGN_MIRROR=$TUF_URL
    $ export COSIGN_ROOT=$TUF_URL/root.json
    $ export COSIGN_OIDC_CLIENT_ID=$RHTAS_APP_REGISTRATION
    $ export SIGSTORE_OIDC_CLIENT_ID=$COSIGN_OIDC_CLIENT_ID
    $ export COSIGN_OIDC_ISSUER=$OIDC_ISSUER_URL
    $ export COSIGN_CERTIFICATE_OIDC_ISSUER=$OIDC_ISSUER_URL
    $ export COSIGN_YES="true"
    $ export COSIGN_FULCIO_URL=$(oc get fulcio -o jsonpath='{.items[0].status.url}' -n trusted-artifact-signer)
    $ export SIGSTORE_FULCIO_URL=$COSIGN_FULCIO_URL
    $ export SIGSTORE_OIDC_ISSUER=$COSIGN_OIDC_ISSUER
    $ export SIGSTORE_REKOR_URL=$COSIGN_REKOR_URL
    $ export COSIGN_OIDC_CLIENT_SECRET_FILE=$(pwd)/rhtas-entra-id-client-secret

  15. 署名のためにローカルマシンを初期化します。

    $ cosign initialize

  16. テストコンテナーイメージに署名して、更新された設定を確認します。

    1. 空のコンテナーイメージを作成します。

      $ echo "FROM scratch" > ./tmp.Dockerfile
      $ podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1h

    2. 空のコンテナーイメージを ttl.sh 一時レジストリーにプッシュします。

      $ podman push ttl.sh/rhtas/test-image:1h

    3. 一時的な Docker ファイルを削除します。

      $ rm ./tmp.Dockerfile

    4. コンテナーイメージに署名します。

      構文

      cosign sign -y --oidc-client-secret-file=SECRET_FILE IMAGE_NAME:TAG

      $ cosign sign -y --oidc-client-secret-file=rhtas-entra-id-client-secret ttl.sh/rhtas/test-image:1h

      Web ブラウザーが開いて、コンテナーイメージをメールアドレスで署名できます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.