第12章 ロボットアカウントによるキーレス認証


Red Hat Quay の以前のバージョンでは、ロボットアカウントトークンは、削除または再生成されない限り、トークンの有効期間中有効でした。有効期限のないトークンは、長期的なパスワードの保存や、削除、再生成、新規認証トークンを管理を望まないユーザーにとって、セキュリティー上の問題を引き起こす可能性があります。

Red Hat Quay 3.13 では、Red Hat Quay 管理者は、Red Hat Single Sign-On (Keycloak プロジェクトに基づく) または Microsoft Entra ID を使用して、外部 OIDC トークンを有効期限が短いまたは 一時的 なロボットアカウントトークンと交換できるようになります。これにより、ロボットアカウントは 1 時間有効のトークンを活用できるようになります。このようなトークンは定期的に更新され、個々のトランザクションの認証に使用できます。

この機能により、トークンを 1 時間後に削除することで、ロボットトークンの漏洩の可能性を軽減し、Red Hat Quay レジストリーのセキュリティーが大幅に向上します。

ロボットアカウントを使用したキーレス認証の設定には、ロボットフェデレーションの設定、OIDC プロバイダーからの OAuth2 トークンの生成、および OAuth2 トークンとロボットアカウントアクセストークンの交換を必要とする複数の手順があります。

12.1. Red Hat Sign Sign-On による OAuth2 トークンの生成

次の手順では、Red Hat Single Sign-On を使用して OAuth2 トークンを生成する方法を示します。OIDC プロバイダーに応じて、これらの手順は異なります。

手順

  1. Red Hat Single Sign-On UI の場合は、以下を行います。

    1. Clients をクリックし、ユーザーの認証を要求できるアプリケーションまたはサービスの名前をクリックします。
    2. クライアントの Settings ページで、次のオプションが設定または有効化されていることを確認します。

      • クライアント ID
      • 有効なリダイレクト URI
      • クライアント認証
      • 認可
      • Standard flow
      • Direct access grants

        注記

        設定はセットアップによって異なる場合があります。

    3. Credentials ページで、今後使用する時のために クライアントシークレット を保存します。
    4. Users ページで、Add user をクリックし、ユーザー名 (例: service-account-quaydev) を入力します。次に、Create をクリックします。
    5. Users ページで、ユーザーの名前 (例: service-account-quaydev) をクリックします。
    6. Credentials タブ Set password をクリックし、ユーザーのパスワードを入力します。必要に応じて、Temporary オプションを選択して、このパスワードを一時的なものにすることができます。
    7. Realm settings タブ OpenID Endpoint Configuration をクリックします。/protocol/openid-connect/token エンドポイントを保存します。以下に例を示します。

      http://localhost:8080/realms/master/protocol/openid-connect/token
  2. Web ブラウザーで、次の URL に移動します。

    http://<keycloak_url>/realms/<realm_name>/protocol/openid-connect/auth?response_type=code&client_id=<client_id>
  3. プロンプトが表示されたら、service-account-quaydev ユーザーと設定した一時パスワードを使用してログインします。必要な情報を入力し、必要に応じて永続的なパスワードを設定してログインを完了します。
  4. クライアントに提供された URI アドレスにリダイレクトされます。以下に例を示します。

    https://localhost:3000/cb?session_state=5c9bce22-6b85-4654-b716-e9bbb3e755bc&iss=http%3A%2F%2Flocalhost%3A8080%2Frealms%2Fmaster&code=ea5b76eb-47a5-4e5d-8f71-0892178250db.5c9bce22-6b85-4654-b716-e9bbb3e755bc.cdffafbc-20fb-42b9-b254-866017057f43

    アドレスに記載されている code をメモしてください。以下に例を示します。

    code=ea5b76eb-47a5-4e5d-8f71-0892178250db.5c9bce22-6b85-4654-b716-e9bbb3e755bc.cdffafbc-20fb-42b9-b254-866017057f43
    注記

    これは 1 回のみ使用できる一時コードです。必要に応じて、ページを更新するか、URL に再度アクセスして別のコードを取得できます。

  5. ターミナルで、次の curl -X POST コマンドを使用して一時的な OAuth2 アクセストークンを生成します。

    $ curl -X POST "http://localhost:8080/realms/master/protocol/openid-connect/token" 1
    -H "Content-Type: application/x-www-form-urlencoded" \
    -d "client_id=quaydev" 2
    -d "client_secret=g8gPsBLxVrLo2PjmZkYBdKvcB9C7fmBz" 3
    -d "grant_type=authorization_code"
    -d "code=ea5b76eb-47a5-4e5d-8f71-0892178250db.5c9bce22-6b85-4654-b716-e9bbb3e755bc.cdffafbc-20fb-42b9-b254-866017057f43" 4
    1
    Red Hat Single Sign-On UI の Realm settings ページにある protocol/openid-connect/token エンドポイント。
    2
    この手順で使用されるクライアント ID。
    3
    クライアント ID のクライアントシークレット。
    4
    リダイレクト URI から返されたコード。

    出力例

    {"access_token":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJTVmExVHZ6eDd2cHVmc1dkZmc1SHdua1ZDcVlOM01DN1N5T016R0QwVGhVIn0...",
    "expires_in":60,"refresh_expires_in":1800,"refresh_token":"eyJhbGciOiJIUzUxMiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJiNTBlZTVkMS05OTc1LTQwMzUtYjNkNy1lMWQ5ZTJmMjg0MTEifQ.oBDx6B3pUkXQO8m-M3hYE7v-w25ak6y70CQd5J8f5EuldhvTwpWrC1K7yOglvs09dQxtq8ont12rKIoCIi4WXw","token_type":"Bearer","not-before-policy":0,"session_state":"5c9bce22-6b85-4654-b716-e9bbb3e755bc","scope":"profile email"}

  6. 前の手順の access_token を保存します。これは次の手順で Red Hat Quay ロボットアカウントトークンと交換されます。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.