第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! サービスアカウントのトークンを取得します。
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! jq (コマンドライン JSON プロセッサー) がインストールされている場合は、トークンを環境変数に保存できます。
export ACCESS_TOKEN=$( \ 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}" \ | jq -r '.access_token')
export ACCESS_TOKEN=$( \ 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}" \ | jq -r '.access_token')
Copy to Clipboard Copied! サービスアカウントをサポートするアプリケーションにリクエストを送信します。
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! - レスポンスは空であるか、アプリケーションによっては特権のないアカウントが指定されているはずです。サービスアカウントを RBAC グループに追加し、ロールをそのグループに追加してみてください。(ユーザーアクセスグループ)
- ロールがサービスアカウントグループに追加されたら、手順 3 を繰り返して新しいトークンを取得し、リクエストを再試行します。これで、さらに権限が付与され、アプリケーションから適切な応答が得られるようになります。