例:トラブルシューティングのためのアクセス制御のクエリ (プレビュー)
注記
この機能は、SaaS版ご利用のお客様のみでサポートされ、プレビューモードとなります。この機能を先行して導入したい場合は、Contrastサポートまでご連絡ください。
本項では、認可の問題のトラブルシューティングを行う際に、Contrast APIを使用してアクセス制御の情報を取得する方法の例を示します。
APIを使用してユーザのロールベースのアクセス制御の情報を取得するには、 「組織の管理」アクションと「プラットフォーム組織の管理」アクションを含むロールが必要です。
ユーザIDのクエリ
ユーザIDを取得するには、以下のクエリを使用します。
以下の環境変数を設定します。
HOSTNAME=http://<YourHostName> ADMIN_APIKEY=<ServiceKey> ADMIN_AUTH=<AdminAuthorization> ORGID=<OrganizationId> USER_EMAIL=<UserEmail> USERID=<obtained in the next step>
Contrast Webインターフェイスで、管理者またはユーザの変数値をユーザメニュー > ユーザの設定より、取得できます。
<YourHostName>
は、ContrastインスタンスのURLに置き換えます。例:https://mycompany.com/Contrast
<ServiceKey>
は、管理者のサービスキーに置き換えます。<AdminAuthorization>
は、管理者の認証ヘッダーに置き換えます。<OrganizationID>
は、ユーザが所属する組織のIDに置き換えます。<UserEmail>
は、Contrastにログインする際に使用するユーザのEメールアドレスに置き換えます。
ユーザのIDを見つけるには、以下のクエリを実行します。
curl -X GET --location "$HOSTNAME/api/v4/organizations/$ORGID/users/$USER_EMAIL" \ -H "API-Key: $ADMIN_APIKEY" \ -H "Authorization: $ADMIN_AUTH"
クエリの結果例(ユーザIDは強調表示されています):
{ "userId": "4790deb8-972d-47c8-b2d0-219617999c83", "username": "contrast_view", "organizationId": "2f95790d-64dd-4344-9b1c-920021d112bb", "firstName": "NX374ERI11", "lastName": "KFG0S17TX6", "status": "ACTIVE", "type": "STANDARD", "enabled": true, "language": "en", "dateTimePreferences": { "dateFormat": "MM/dd/yyyy", "timeFormat": "hh:mm a", "timeZone": "EST" }, "auditDates": { "lastLoginTime": "2024-05-29T14:28:00.000+00:00", "creationDate": "2024-04-23T20:33:21.000+00:00" }, "userAccessGroupMembership": [ { "userAccessGroupId": "725e7af7-8cf4-44b3-a6d2-b30e6df6573e" }, { "userAccessGroupId": "eeb65497-1e65-4eb3-99af-b781a4ce7d29" }, { "userAccessGroupId": "12565428-1063-41c4-ada0-cbee082f5eca" } ], "apiOnly": false, "external": false, "serviceKey": "demo" }
USERID変数にユーザIDを割り当てます。
USERID=4790deb8-972d-47c8-b2d0-219617999c83
ユーザアクセスのクエリ
ユーザのすべてのアクセス制御の情報を取得するには、以下のクエリを実行します。
curl -X GET --location "$HOSTNAME/api/v4/organizations/$ORGID/access-control-query/users/$USERID" \ -H "API-Key: $ADMIN_APIKEY" \ -H "Authorization: $ADMIN_AUTH"
ログイン権限のクエリ
ユーザにログイン権限があるかどうかを調べるには、以下のクエリを実行します。
ユーザには、少なくとも「組織の閲覧」アクションを含むロールが必要です。以下のクエリを実行します。
curl -s -X GET --location "$HOSTNAME/api/v4/organizations/$ORGID/access-control-query/users/$USERID" -H "API-Key: $ADMIN_APIKEY" -H "Authorization: $ADMIN_AUTH" \ | jq | grep ORG_SETTINGS | sort | uniq | wc -l | if grep -q 0; then echo "Not configured for login"; else echo "Configured for login"; fi
結果例:
Configured for login
ユーザロールのクエリ
ユーザに割り当てられているすべてのロールを検索するには、以下のクエリを実行します。
curl -s -X GET --location "$HOSTNAME/api/v4/organizations/$ORGID/access-control-query/users/$USERID" -H "API-Key: $ADMIN_APIKEY" -H "Authorization: $ADMIN_AUTH" \ | jq | grep roleName | sort | uniq
結果例:
"roleName": "ORGANIZATION_VIEW_ROLE", "roleName": "rg with 1 app role",
ユーザアクセスグループのクエリ
ユーザに割り当てられているすべてのユーザアクセスグループを検索するには、以下のクエリを実行します。
curl -s -X GET --location "$HOSTNAME/api/v4/organizations/$ORGID/access-control-query/users/$USERID" -H "API-Key: $ADMIN_APIKEY" -H "Authorization: $ADMIN_AUTH" \ | jq | grep userAccessGroupName | sort | uniq
結果例:
"userAccessGroupName": "Organization View", "userAccessGroupName": "rg with 1 app uag",
リソースの種類、アクション、IDのクエリ
ユーザのリソース、アクション、ID の一覧を取得するには、以下のクエリを実行します。
curl -s -X GET --location "$HOSTNAME/api/v4/organizations/$ORGID/access-control-query/users/$USERID" \ -H "API-Key: $ADMIN_ADMIN_APIKEY" \ -H "Authorization: $ADMIN_AUTH" | jq '.accessList[] | "\(.resourceType) \(.actions) \(.resourceId)"' | sort | uniq
結果例:
"APPLICATION [\"APPLICATION_EDIT\",\"APPLICATION_RULES_ADMIN\",\"APPLICATION_ADMIN\",\"APPLICATION_VIEW\"] 0383916c-956b-418b-a114-0ffc3420cb1c" "APPLICATION [\"APPLICATION_EDIT\",\"APPLICATION_RULES_ADMIN\",\"APPLICATION_ADMIN\",\"APPLICATION_VIEW\"] 1a7539c4-2339-4524-958d-b60482ebf1f8" "APPLICATION [\"APPLICATION_EDIT\",\"APPLICATION_RULES_ADMIN\",\"APPLICATION_ADMIN\",\"APPLICATION_VIEW\"] 2762d3b4-1033-406e-94cc-f4040b6e7111" "APPLICATION [\"APPLICATION_EDIT\",\"APPLICATION_RULES_ADMIN\",\"APPLICATION_ADMIN\",\"APPLICATION_VIEW\"] 7843ab03-84a7-4f21-93bf-37e7bf47f94d" "APPLICATION [\"APPLICATION_EDIT\",\"APPLICATION_RULES_ADMIN\",\"APPLICATION_ADMIN\",\"APPLICATION_VIEW\"] 97b1a6a1-ee34-4974-9ee2-4c92733de2bb" "APPLICATION [\"APPLICATION_EDIT\",\"APPLICATION_RULES_ADMIN\",\"APPLICATION_ADMIN\",\"APPLICATION_VIEW\"] a8b804ad-cbe4-43e7-a03f-3f639f5680ab" "APPLICATION [\"APPLICATION_EDIT\",\"APPLICATION_RULES_ADMIN\",\"APPLICATION_ADMIN\",\"APPLICATION_VIEW\"] d0c389d7-744c-4f2a-b391-8bf41c0dc09c" "APPLICATION [\"APPLICATION_EDIT\",\"APPLICATION_RULES_ADMIN\",\"APPLICATION_ADMIN\",\"APPLICATION_VIEW\"] de9248b1-e8f5-43b9-a4e3-8a65e844691d" "APPLICATION [\"PROTECT_ACCESS\",\"PROTECT_POLICIES_MANAGE\"] 0383916c-956b-418b-a114-0ffc3420cb1c" "APPLICATION [\"PROTECT_ACCESS\",\"PROTECT_POLICIES_MANAGE\"] 1a7539c4-2339-4524-958d-b60482ebf1f8" "APPLICATION [\"PROTECT_ACCESS\",\"PROTECT_POLICIES_MANAGE\"] 2762d3b4-1033-406e-94cc-f4040b6e7111" "APPLICATION [\"PROTECT_ACCESS\",\"PROTECT_POLICIES_MANAGE\"] 7843ab03-84a7-4f21-93bf-37e7bf47f94d" "APPLICATION [\"PROTECT_ACCESS\",\"PROTECT_POLICIES_MANAGE\"] 97b1a6a1-ee34-4974-9ee2-4c92733de2bb" "APPLICATION [\"PROTECT_ACCESS\",\"PROTECT_POLICIES_MANAGE\"] a8b804ad-cbe4-43e7-a03f-3f639f5680ab" "APPLICATION [\"PROTECT_ACCESS\",\"PROTECT_POLICIES_MANAGE\"] d0c389d7-744c-4f2a-b391-8bf41c0dc09c"