5.4. リポジトリーへのアクセス管理
Quay.io ユーザーは、独自のリポジトリーを作成し、インスタンスに含まれる他のユーザーにそのリポジトリーへのアクセスを許可できます。または、特定の組織を作成して、定義されたチームに基づいてリポジトリーへのアクセスを許可することもできます。
ユーザーリポジトリーと組織リポジトリーのどちらでも、ロボットアカウントに関連する認証情報を作成すると、そのリポジトリーへのアクセスを許可できます。ロボットアカウントを使用すると、Quay.io ユーザーアカウントを持っていないさまざまなコンテナークライアント (Docker や Podman など) がリポジトリーに簡単にアクセスできるようになります。
5.4.1. ユーザーリポジトリーへのアクセスの許可 リンクのコピーリンクがクリップボードにコピーされました!
ユーザー名前空間にリポジトリーを作成すると、そのリポジトリーへのアクセスを、ユーザーアカウントに、またはロボットアカウントを通じて追加できます。
5.4.1.1. ユーザーリポジトリーへのユーザーアクセスの許可 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーアカウントに関連付けられたリポジトリーへのアクセスを許可するには、次の手順を実行します。
手順
- ユーザーアカウントを使用して Quay.io にログインします。
- 複数のユーザー間で共有されるユーザー名前空間配下のリポジトリーを選択します。
- ナビゲーションペインで Settings を選択します。
自分のリポジトリーへのアクセスを許可するユーザーの名前を入力します。入力すると、名前が表示されます。以下に例を示します。
パーミッションボックスで、以下のいずれかを選択します。
- Read。リポジトリーの表示とリポジトリーからのプルをユーザーに許可します。
- Write。リポジトリーの表示、リポジトリーからのプル、リポジトリーへのイメージのプッシュをユーザーに許可します。
- Admin。リポジトリーに対するすべての管理設定と、すべての Read および Write 権限をユーザーに提供します。
- Add Permission ボタンを選択します。これで、ユーザーに権限が割り当てられました。
- オプション: リポジトリーに対するユーザー権限を削除または変更するには、Options アイコンを選択し、Delete Permission を選択します。
5.4.1.2. ユーザーリポジトリーへのロボットアクセスの許可 リンクのコピーリンクがクリップボードにコピーされました!
ロボットアカウントは、Quay.io レジストリー内のリポジトリーへの自動アクセスを設定するために使用されます。ロボットアカウントは OpenShift Container Platform のサービスアカウントに似ています。
ロボットアカウントを設定すると、以下が実行されます。
- ロボットアカウントに関連付けられた認証情報が生成されます。
- ロボットアカウントがイメージをプッシュおよびプルできるリポジトリーとイメージが特定されます。
- 生成された認証情報をコピー/ペーストして、Docker、Podman、Kubernetes、Mesos などのさまざまなコンテナークライアントで使用し、定義された各リポジトリーにアクセスできます。
各ロボットアカウントは、1 つのユーザー名前空間または組織に制限されます。たとえば、ロボットアカウントは、ユーザー jsmith
にすべてのリポジトリーへのアクセスを提供できます。しかし、ユーザーのリポジトリーリストにないリポジトリーへのアクセスは提供できません。
次の手順を使用して、リポジトリーへのアクセスを許可できるロボットアカウントを設定します。
手順
- Repositories ランディングページで、ユーザーの名前をクリックします。
- ナビゲーションペインで Robot Accounts をクリックします。
- Create Robot Account をクリックします。
- ロボットアカウントの名前を入力します。
- オプション: ロボットアカウントの説明を入力します。
-
Create Robot Account をクリックします。ロボットアカウントの名前は、ユーザー名とロボットの名前を組み合わせたものになります (例:
jsmith+robot)
。 - ロボットアカウントを関連付けるリポジトリーを選択します。
ロボットアカウントの権限を次のいずれかに設定します。
- None。ロボットアカウントにリポジトリーに対する権限は付与されません。
- Read。ロボットアカウントがリポジトリーの表示とリポジトリーからのプルを行えるようになります。
- Write。ロボットアカウントがリポジトリーからの読み取り (プル) とリポジトリーへの書き込み (プッシュ) を行えるようになります。
- Admin。プルおよびプッシュを行うためのリポジトリーへのフルアクセスに加えて、リポジトリーに関連する管理作業を行う権限を付与します。
- Add permissions ボタンをクリックして設定を適用します。
- Robot Accounts ページで、ロボットアカウントを選択して、そのロボットの認証情報を表示します。
Robot Account オプションで、Copy to Clipboard をクリックして、ロボット用に生成されたトークンをコピーします。新しいトークンを生成するには、Regenerate Token をクリックします。
注記トークンを再生成すると、このロボットの以前のトークンがすべて無効になります。
生成された認証情報を次の方法で取得します。
- Kubernetes Secret: Kubernetes プルシークレット yaml ファイルの形式で認証情報をダウンロードするには、これを選択します。
-
rkt Configuration: rkt コンテナーランタイムの認証情報を
.json
ファイルの形式でダウンロードするには、これを選択します。 -
Docker Login: 認証情報を含む完全な
docker login
コマンドラインをコピーするには、これを選択します。 -
Docker Configuration: Docker
config.json
ファイルとして使用するファイルがダウンロードし、クライアントシステムに認証情報を永続的に保存するには、これを選択します。 - Mesos Credentials: Mesos 設定ファイルの URI フィールドで識別できる認証情報を提供する tarball をダウンロードするには、これを選択します。
5.4.2. 組織リポジトリー リンクのコピーリンクがクリップボードにコピーされました!
組織を作成すると、リポジトリーのセットを直接その組織に関連付けることができます。組織リポジトリーは、組織がユーザーのグループを通じて共有リポジトリーをセットアップすることを目的としているという点で、基本的なリポジトリーとは異なります。Quay.io では、ユーザーのグループは、チーム、同じ権限を持つユーザーのセット、または 個々のユーザー のいずれかです。
組織に関するその他の有用な情報を以下に示します。
- 組織を別の組織内に組み込むことはできません。組織を細分化するには、チームを使用します。
組織にユーザーを直接含めることはできません。まずチームを追加してから、各チームに 1 人以上のユーザーを追加する必要があります。
注記個々のユーザーは、組織内の特定のリポジトリーに追加できます。そのため、これらのユーザーは、Repository Settings ページのどのチームのメンバーでもありません。Teams and Memberships ページの Collaborators View に、特に組織に所属する必要がなく、その組織内の特定のリポジトリーに直接アクセスできるユーザーが表示されます。
- チームは、リポジトリーおよび関連イメージを使用する単なるメンバーとして、または組織を管理するための特別な権限を持つ管理者として、組織内に設定できます。
5.4.2.1. 組織の作成 リンクのコピーリンクがクリップボードにコピーされました!
組織を作成するには、次の手順を実行します。
手順
- Repositories ランディングページで、Create New Organization をクリックします。
- Organization Name に、2 文字以上 225 文字未満の名前を入力します。
- Organization Email に、アカウントのメールアドレスとは異なるメールアドレスを入力します。
- 組織のプランをを、無料プランまたはいずれかの有料プランの中から選択します。
- Create Organization をクリックして作成を完了します。
5.4.2.1.1. API を使用した別の組織の作成 リンクのコピーリンクがクリップボードにコピーされました!
API を使用して別の組織を作成できます。これを行うには、UI を使用して最初の組織を作成しておく必要があります。OAuth アクセストークンも生成しておく必要があります。
Red Hat Quay API エンドポイントを使用して別の組織を作成するには、次の手順を実行します。
前提条件
- UI を使用して少なくとも 1 つの組織をすでに作成している。
- OAuth アクセストークンを生成している。詳細は、「OAuth アクセストークンの作成」を参照してください。
手順
次のコマンドを入力して、
data.json
という名前のファイルを作成します。touch data.json
$ touch data.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の内容をファイルに追加します。これが新しい組織の名前になります。
{"name":"testorg1"}
{"name":"testorg1"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、OAuth アクセストークンと Red Hat Quay レジストリーエンドポイントを渡し、API エンドポイントを使用して新しい組織を作成します。
curl -X POST -k -d @data.json -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" http://<quay-server.example.com>/api/v1/organization/
$ curl -X POST -k -d @data.json -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" http://<quay-server.example.com>/api/v1/organization/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
"Created"
"Created"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.2.2. 組織へのチームの追加 リンクのコピーリンクがクリップボードにコピーされました!
組織のためにチームを作成する際に、チーム名を選択し、チームが利用できるリポジトリーを選択し、チームのアクセスレベルを決定できます。
組織のチームを作成するには、次の手順を実行します。
前提条件
- 組織を作成している。
手順
- Repositories ランディングページで、チームを追加する組織を選択します。
- ナビゲーションペインで、Teams and Membership を選択します。デフォルトでは、組織を作成したユーザーの Admin 権限を持つ owners チームが存在します。
- Create New Team をクリックします。
- 新しいチームの名前を入力します。チーム名の先頭は小文字である必要があります。また、使用できるのは小文字と数字のみです。大文字や特殊文字は使用できません。
- Create team をクリックします。
- チームの名前をクリックすると、Team ページにリダイレクトされます。ここで、チームの説明を追加したり、登録ユーザー、ロボット、メールアドレスなどのチームメンバーを追加したりできます。詳細は、「チームへのユーザーの追加」を参照してください。
- No repositories テキストをクリックすると、使用可能なリポジトリーのリストが表示されます。チームにアクセスを許可する各リポジトリーのボックスを選択します。
チームに付与する適切な権限を選択します。
- None。チームメンバーにリポジトリーに対する権限は付与されません。
- Read。チームメンバーがリポジトリーの表示とリポジトリーからのプルを行えるようになります。
- Write。チームメンバーがリポジトリーの読み取り (プル) とリポジトリーへの書き込み (プッシュ) を行えるようになります。
- Admin。プルおよびプッシュを行うためのリポジトリーへのフルアクセスに加えて、リポジトリーに関連する管理作業を行う権限を付与します。
- Add permissions を選択して、チームのリポジトリー権限を保存します。
5.4.2.3. チームロールの設定 リンクのコピーリンクがクリップボードにコピーされました!
チームを追加したら、そのチームの組織内でのロールを設定できます。
前提条件
- チームを作成している。
手順
- Repository ランディングページで、組織の名前をクリックします。
- ナビゲーションウィンドウで、Teams and Membership をクリックします。
次の図に示すように、TEAM ROLE ドロップダウンメニューを選択します。
選択したチームについて、以下のロールのいずれかを選択します。
- Member。チームに設定されているすべての権限を継承します。
- Creator。メンバーのすべての権限に加えて、新しいリポジトリーを作成する権限を付与します。
- Admin。チームの作成、メンバーの追加、権限の設定など、組織への完全な管理アクセス権を付与します。
5.4.2.4. チームへのユーザーの追加 リンクのコピーリンクがクリップボードにコピーされました!
組織に対する管理者権限を持っていれば、ユーザーとロボットアカウントをチームに追加できます。ユーザーを追加すると、Quay.io はそのユーザーに電子メールを送信します。そのユーザーが招待を受け入れるまで、ユーザーは保留状態のままになります。
ユーザーまたはロボットアカウントをチームに追加するには、次の手順を実行します。
手順
- Repository ランディングページで、組織の名前をクリックします。
- ナビゲーションウィンドウで、Teams and Membership をクリックします。
- ユーザーまたはロボットアカウントを追加するチームを選択します。
Team Members ボックスに、次のいずれかの情報を入力します。
- レジストリー上のアカウントからのユーザー名。
- レジストリー上のユーザーアカウントのメールアドレス。
ロボットアカウントの名前。名前は、<組織名>+<ロボット名> の形式である必要があります。
注記ロボットアカウントはすぐにチームに追加されます。ユーザーアカウントの場合、参加の招待がユーザーにメールで送信されます。ユーザーがその招待を受け入れるまで、ユーザーは INVITED TO JOIN 状態のままになります。ユーザーがチームへの参加招待メールを受け入れると、INVITED TO JOIN リストから組織の MEMBERS リストに移動します。