サービスアカウントの作成と管理
サービスアカウントの作成および管理
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
サービスアカウントにより、システムサービスに特定のリソースにアクセスできるようになります。ユーザーはサービスアカウントを作成できますが、Organization Administrator ロールまたはユーザーアクセス Admin ロールを持つユーザーのみが、サービスアカウントをユーザーグループに割り当てることができます。サービスアカウントには、ユーザーグループに付与されるアクセス許可が付与されます。
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、用語の置き換えは、今後の複数のリリースにわたって段階的に実施されます。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
第1章 サービスアカウント リンクのコピーリンクがクリップボードにコピーされました!
アカウントはユーザーアカウントまたはサービスアカウントのどちらかです。ユーザーアカウントで、組織内のユーザー (人) を認証します。サービスアカウントは、人間の介入なしにアプリケーションやサービスを認証します。以下の目的で、Red Hat Hybrid Cloud Console でサービスアカウントを作成します。
- アプリケーションまたはサービスは特定のリソースへのアクセスを必要である。
- アプリケーションまたはサービスは、人の介入を必要とせずにリソースにアクセスする必要がある。
- アプリケーションまたはサービスは、複数の場所からリソースにアクセスする必要がある。
Red Hat Hybrid Cloud Console のクラウドサービス API に接続するには、サービスアカウントを使用する必要があります。Red Hat の Basic 認証のサポートは 2024 年 12 月 31 日に終了予定で、その日以降はトークンベースの認証のみが許可されます。サービスアカウントは、トークンベースの認証をサポートします。
サービスアカウントの実装の詳細は、サービスアカウントを介した Basic 認証からトークンベース認証への Red Hat Hybrid Cloud Console API の移行 を参照してください。
API には、Red Hat Single Sign-On からのアクセストークンが必要です。トークンは 15 分 (900 秒) 後に期限切れになります。アクセストークンを取得するプロセスを 10 分 (600 秒) ごとに繰り返し、有効期限が切れる前にトークンがローテーションされるようにします。(RFC 6749, Section 4.1.4)
第2章 サービスアカウントの作成および管理 リンクのコピーリンクがクリップボードにコピーされました!
サービスアカウントを使用すると、エンドユーザーの認証情報や直接の操作を必要とせずに、サービスやアプリケーションに安全かつ自動的に接続して認証できます。
Red Hat サービスアカウントを作成すると、クライアント ID と シークレット が生成されます。サービスアカウントは ID とシークレットを使用して Red Hat Hybrid Cloud Console のサービスにアクセスします。
- クライアント ID クライアント ID は、ユーザー名がユーザーを識別するのと同じように、リソースに対してサービスアカウントを識別します。
- シークレット シークレットは、パスワードと同様の機能を提供します。シークレットは、サービスアカウントを作成するときに一度表示されます。シークレットをコピーして保存し、パスワードと同じように保護します。
サービスアカウントを作成した後、該当するユーザーアクセスグループに追加します。(ユーザーアクセスは、ロールベースのアクセス制御の Red Hat 実装です。)ユーザーアクセスグループに割り当てられたロールによって、サービスアカウントが Red Hat Hybrid Cloud Console 上のアプリケーションおよびサービスに対して割り当てられるアクセスのレベルが決まります。サービスアカウントのグループを作成することもできます。
次のタスクでは、サービスアカウントとグループを作成および管理する方法を示します。
サービスアカウントのクライアント ID とシークレットを生成した後、次のタスクを実行できます。
サービスアカウントをリセットまたは削除するには、サービスアカウントの所有者である必要があります。組織管理者は、任意のサービスアカウントをリセットまたは削除できます。
2.1. サービスアカウントの作成 リンクのコピーリンクがクリップボードにコピーされました!
サービスアカウントを作成し、そのアカウントで使用するクライアント ID とシークレットを生成できます。
前提条件
- Red Hat Hybrid Cloud Console にログインしている。
手順
- Red Hat Hybrid Cloud Console から、設定アイコン (⚙) をクリックし、Service Accounts をクリックします。
- Create service account をクリックしてアカウントを設定します。
- Service account name および Short description を入力し、Create をクリックします。
生成された Client ID と Client secret の値を安全な場所にコピーします。サービスへの接続を設定するときに、これらの認証情報を指定します。
重要クライアントシークレット は 1 回しか表示されないため、認証情報ウィンドウを閉じる前に、コピーした認証情報が正常かつ安全に保存されたことを確認してください。
- クライアント ID とシークレットを安全な場所に保存したら、認証情報ウィンドウで確認チェックボックスを選択し、ウィンドウを閉じます。Client Secret は再度表示されません。
- サービスアカウントとそのクライアント ID が Service Accounts ページに表示されます。
2.2. サービスアカウントのユーザーアクセスグループへの追加 リンクのコピーリンクがクリップボードにコピーされました!
組織管理者は、Red Hat Hybrid Cloud Console 上のサービスおよびアプリケーションにアクセスできる権限を持つユーザーアクセスグループにサービスアカウントを追加します。サービスアカウントは誰でも作成できますが、組織管理者またはユーザーアクセス管理者のみがサービスアカウントをグループに追加できます。
前提条件
- 組織管理者またはユーザーアクセス管理者権限を持つユーザーとして Red Hat Hybrid Cloud Console にログインしている。
-
1 つ以上のサービスアカウントが Red Hat 組織アカウントに関連付けられている。
「サービスアカウントの作成」 -
サービスアカウントを追加できるユーザーアクセスグループがすでに存在している。
「サービスアカウントのユーザーアクセスグループの作成」
手順
- Red Hat Hybrid Cloud Console から、設定アイコン (⚙) をクリックし、ユーザーアクセス をクリックします。
- サービスアカウントを既存のグループに追加するには、Groups タブをクリックし、サービスアカウントを追加するグループの名前をクリックします。
- グループ名ウィンドウが表示されたら、Service accounts タブをクリックします。
- Add service account をクリックします。Red Hat の組織アカウントに関連付けられているすべてのサービスアカウントのリストが表示されます。
- ユーザーアクセスグループに追加するサービスアカウントをクリックし、Add to group をクリックします。
- サービスアカウントが Service accounts タブに表示されます。
2.3. サービスアカウントのユーザーアクセスグループの作成 リンクのコピーリンクがクリップボードにコピーされました!
組織管理者は、サービスアカウントに固有のロールまたはパーミッションを持つ新しいユーザーアクセスグループを作成できます。このグループには、サービスアカウントが Red Hat Hybrid Cloud Console 上のサービスおよびアプリケーションにアクセスできるパーミッションがあります。どのユーザーもサービスアカウントを作成できますが、サービスアカウントの新しいグループを追加または作成できるのは、組織管理者またはユーザーアクセス管理者のみです。
前提条件
- 組織管理者またはユーザーアクセス管理者権限を持つユーザーとして Red Hat Hybrid Cloud Console にログインしている。
- 1 つ以上のサービスアカウントが Red Hat 組織アカウントに関連付けられている。「サービスアカウントの作成」
ユーザーアクセスグループに追加するサービスアカウントの Client Secret 情報にアクセスできる。
注記Client Secret 情報は、新しいサービスアカウントを作成するときに 1 回表示されます。その情報をコピーして保存する必要があります。これは再度表示されません。
手順
この例では、サービスアカウントが Red Hat Ansible Automation Platform で自動化分析を表示できるようにするグループを作成します。
- Red Hat Hybrid Cloud Console から、設定アイコン (⚙) をクリックし、ユーザーアクセス をクリックします。
- Groups タブをクリックし、Create Group をクリックします。
- グループ名 と グループの説明 を追加します。説明は任意です。
- Next をクリックして、グループにロールを追加します。この例の場合、Automation Analytics viewer を見つけて、ロール名の横にあるチェックボックスをクリックします。
- Next をクリックすると、Add members が表示されます。メンバーではなくサービスアカウントを追加するため、Next をクリックします。
- Add service accounts が表示されます。追加するサービスアカウントを選択し、名前の横にあるチェックボックスをクリックします。
- Next をクリックして詳細を確認します。変更の必要がない場合は、Submit をクリックします。サービスアカウントと Automation Analytics viewer ロールおよびパーミッションを含む新しいグループが作成されます。
2.4. ユーザーアクセスグループからのサービスアカウントの削除 リンクのコピーリンクがクリップボードにコピーされました!
組織管理者は Red Hat Hybrid Cloud Console のユーザーアクセスグループからサービスアカウントを削除できます。すべてのユーザーがサービスアカウントを作成できますが、グループからサービスアカウントを削除できるのは組織管理者またはユーザーアクセス管理者だけです。
前提条件
- 組織管理者またはユーザーアクセス管理者権限を持つユーザーとして Red Hat Hybrid Cloud Console にログインしている。
- 1 つ以上のサービスアカウントが Red Hat 組織アカウントに関連付けられている。「サービスアカウントの作成」
手順
- Red Hat Hybrid Cloud Console から、設定アイコン (⚙) をクリックし、ユーザーアクセス をクリックします。
- グループからサービスアカウントを削除するには、Groups タブをクリックして、サービスアカウントが含まれるグループの名前をクリックします。
- グループ名ウィンドウが表示されたら、Service accounts タブをクリックします。そのグループ内のすべてのサービスアカウントが表示されます。
単一のサービスアカウントを削除します。
- Name 行のオプションアイコン (⋮) をクリックし、Remove をクリックします。
- Remove service account? メッセージを確認し、Remove service account をクリックします。
複数のサービスアカウントを削除します。
- 削除する各アカウントの横にあるチェックボックスをクリックします。
- 選択したサービスアカウントのいずれかの Name 行にあるオプションアイコン (⋮) をクリックし、Remove をクリックします。
- Remove service account? メッセージを確認し、Remove service account をクリックします。
- 選択したサービスアカウントが Service accounts タブに表示されないことを確認します。
2.5. サービスアカウントシークレットのリセット リンクのコピーリンクがクリップボードにコピーされました!
サービスアカウントのシークレットをリセットできます。シークレットをリセットしても、クライアント ID は変更されません。サービスアカウントをリセットまたは削除するには、サービスアカウントの所有者である必要があります。組織管理者ユーザーは、任意のサービスアカウントをリセットまたは削除できます。
前提条件
- Red Hat Hybrid Cloud Console にログインしている。
手順
- Red Hat Hybrid Cloud Console から、設定アイコン (⚙) をクリックし、Service Accounts をクリックします。
- 既存のサービスアカウントのリストで、リセットするサービスアカウントを選択し、オプションアイコン (⋮) をクリックします。
- このアカウントをリセットすることを確認し、Reset credentials をクリックします。
更新された Client secret の値を安全な場所にコピーします。サービスへの接続を設定するときに、これらの認証情報を指定します。
重要生成された認証情報は 1 回しか表示されないため、認証情報ウィンドウを閉じる前に、コピーした認証情報が正常かつ安全に保存されたことを確認してください。
- 生成されたクレデンシャルを安全な場所に保存したら、認証情報ウィンドウで確認チェックボックスを選択し、ウィンドウを閉じます。
2.6. サービスアカウントの削除 リンクのコピーリンクがクリップボードにコピーされました!
サービスアカウントを削除できます。サービスアカウントをリセットまたは削除するには、サービスアカウントの所有者である必要があります。組織管理者ユーザーは、任意のサービスアカウントをリセットまたは削除できます。
前提条件
- Red Hat Hybrid Cloud Console にログインしている。
手順
- Red Hat Hybrid Cloud Console から、設定アイコン (⚙) をクリックし、Service Accounts をクリックします。
- 削除するサービスアカウントを特定し、オプションアイコン (⋮) をクリックします。
- このアカウントを削除することを確認し、Delete service account をクリックします。
第3章 サービスでのサービスアカウントの使用 リンクのコピーリンクがクリップボードにコピーされました!
以下の情報は、サービスと CLIENT_ID および CLIENT_SECRET 変数でサービスアカウントを使用する方法を簡単に説明します。参考ガイドラインとしてのみ提供されています。
- 新しいサービスアカウント (Red Hat Hybrid Cloud Console サービスアカウント) を作成します。
次の情報を端末に貼り付けて、CLIENT_ID 変数と CLIENT_SECRET 変数を置き換えます。
export HOST='https://sso.redhat.com' CLIENT_ID='<client_id>' CLIENT_SECRET='<client_secret>' SCOPES='openid api.iam.service_accounts'
export HOST='https://sso.redhat.com' CLIENT_ID='<client_id>' CLIENT_SECRET='<client_secret>' SCOPES='openid api.iam.service_accounts'Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスアカウントのトークンを取得します。
curl "${HOST}/auth/realms/redhat-external/protocol/openid-connect/token" \ --data-urlencode "grant_type=client_credentials" \ --data-urlencode "client_id=${CLIENT_ID}" \ --data-urlencode "client_secret=${CLIENT_SECRET}" \ --data-urlencode "scope=${SCOPES}"curl "${HOST}/auth/realms/redhat-external/protocol/openid-connect/token" \ --data-urlencode "grant_type=client_credentials" \ --data-urlencode "client_id=${CLIENT_ID}" \ --data-urlencode "client_secret=${CLIENT_SECRET}" \ --data-urlencode "scope=${SCOPES}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow jq (コマンドライン JSON プロセッサー) がインストールされている場合は、トークンを環境変数に保存できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスアカウントをサポートするアプリケーションにリクエストを送信します。
curl --header "Authorization:Bearer ${ACCESS_TOKEN}" --location "https://console.redhat.com/api/rbac/v1/access/?application=inventory"curl --header "Authorization:Bearer ${ACCESS_TOKEN}" --location "https://console.redhat.com/api/rbac/v1/access/?application=inventory"Copy to Clipboard Copied! Toggle word wrap Toggle overflow - レスポンスは空であるか、アプリケーションによっては特権のないアカウントが指定されているはずです。サービスアカウントを RBAC グループに追加し、ロールをそのグループに追加してみてください。(ユーザーアクセスグループ)
- ロールがサービスアカウントグループに追加されたら、手順 3 を繰り返して新しいトークンを取得し、リクエストを再試行します。これで、さらに権限が付与され、アプリケーションから適切な応答が得られるようになります。