通过设置 CAM 策略, 您可以控制哪些子用户或协作者账号拥有人脸识别 API 和控制台的查看和操作权限。
目前人脸识别支持服务级、接口级和资源级授权三种方式:
服务级授权:您可以将预设全读写策略 QcloudFRFullAccess 授予子账户,其将能够和您一样访问人脸识别所有功能。如果您只授予预设只读策略 QcloudFRReadOnlyAccess,其将只能执行只读操作。全局预设只读策略 ReadOnlyAccess 不⽀持授予⼦账户⼈脸识别的控制台只读操作权限。
接口级授权:您可以在 CAM 控制台中按接口维度给子账户授权,子账户将只能使用您已授权的接口。可参考使用示例中授予单个接口权限的操作 授予单个接口权限。
资源级授权:您可以在 CAM 控制台中按人员库资源维度给子账户授权,子账户将只能操作您已授权的人员库。可参考 支持资源级授权的接口列表。
支持资源级授权的接口列表
支持资源级授权的接口列表
API 名 | API 描述 | 资源类型 | 资源六段式示例 |
GetGroupInfo | 获取人员库信息 | 人员库 ID | qcs::iai:$region:$account:groupid/* qcs::iai:$region:$account:groupid/$groupId |
GetGroupList | 获取人员库列表 | 人员库 ID | qcs::iai:$region:$account:groupid/* qcs::iai:$region:$account:groupid/$groupId |
GetLargePersonList | 获取大人员列表 | 人员库 ID | qcs::iai:$region:$account:groupid/* qcs::iai:$region:$account:groupid/$groupId |
GetPersonList | 获取人员库列表 | 人员库 ID | qcs::iai:$region:$account:groupid/* qcs::iai:$region:$account:groupid/$groupId |
GetPersonListNum | 获取人员库列表数量 | 人员库 ID | qcs::iai:$region:$account:groupid/* qcs::iai:$region:$account:groupid/$groupId |
SearchFaces | 人脸搜索 | 人员库 ID | qcs::iai:$region:$account:groupid/* qcs::iai:$region:$account:groupid/$groupId |
SearchFacesReturnsByGroup | 人脸搜索按库返回 | 人员库 ID | qcs::iai:$region:$account:groupid/* qcs::iai:$region:$account:groupid/$groupId |
SearchPersons | 人员搜索 | 人员库 ID | qcs::iai:$region:$account:groupid/* qcs::iai:$region:$account:groupid/$groupId |
SearchPersonsReturnsByGroup | 人员搜索按库返回 | 人员库 ID | qcs::iai:$region:$account:groupid/* qcs::iai:$region:$account:groupid/$groupId |
ConsoleSearchFaces | 控制台人脸搜索 | 人员库 ID | qcs::iai:$region:$account:groupid/ *qcs::iai:$region:$account:groupid/$groupId |
ConsoleSearchPersons | 控制台人员搜索 | 人员库 ID | qcs::iai:$region:$account:groupid/* qcs::iai:$region:$account:groupid/$groupId |
ConsoleGetGroupList | 控制台分页获取人员库列表 | 人员库 ID | qcs::iai:$region:$account:groupid/* qcs::iai:$region:$account:groupid/$groupId |
ConsoleGetPersonList | 控制台获取人员列表 | 人员库 ID | qcs::iai:$region:$account:groupid/* qcs::iai:$region:$account:groupid/$groupId |
ConsoleModifyPersonInfo | 控制台修改人员信息 | 人员库 ID | qcs::iai:$region:$account:groupid/* qcs::iai:$region:$account:groupid/$groupId |
注意
文档上的其他接口均为接口级。
使用示例
在接口级和资源级接口均可以按照以下的方式给子账户授权。如果 resource 字段填 * ,相当于授予 action 里的接口所有的权限。接口级接口必须授予 * 才可使用,资源级可授予 * 或资源六段式。高级策略会覆盖低级策略,若资源级接口授予了 * ,则其他资源六段式不会生效。
授予单个接口权限
授予单个接口权限
以下为给子账户授予五官定位(AnalyzeFace)和稠密关键点(AnalyzeDenseLandmarks)授权。在 action 中填入对应的接口名:
{"version": "2.0","statement": [{"effect": "allow","resource": ["*"],"action": ["name/iai:AnalyzeDenseLandmarks","name/iai:AnalyzeFace"]}]}
其中 action 可以指定多个接口和支持通配符 * 。上述的授权方式也可以简化为以下的方式:
{"version": "2.0","statement": [{"effect": "allow","resource": ["*"],"action": ["name/iai:Analyze*"]}]}
授予某些人员库的所有操作权限
人员库管理相关接口较多,部分接口为接口级,部分为资源级。只有资源级接口能做到人员库粒度化控制,接口级接口暂时只能全量授权。若想给某个子账户授予特定人员库的所有操作权限,则资源级接口可以限制为特定人员库的资源六段式,接口级暂时只能授予*。
以下示例中第一个 statement 为给子账户授予 test * 的人员库资源级接口操作权限,第二个 statement 为授予子账户所有人员库接口级接口操作权限。可参考我们的官网文档对部分接口进行微调:
{"version": "2.0","statement": [{"effect": "allow","resource": ["qcs::iai:::groupid/test*"],"action": ["name/iai:CheckSimilarPerson","name/iai:CopyPerson","name/iai:CreatePerson","name/iai:Delete*","name/iai:Get*","name/iai:ConsoleGet*""name/iai:Modify*","name/iai:ConsoleModify*","name/iai:Search*","name/iai:ConsoleSearch*","name/iai:UpgradeGroupFaceModelVersion"]},{"effect": "allow","resource": ["*"],"action": ["name/iai:CreateGroup","name/iai:CreateFace","name/iai:CreateFaceWithFaceRect","name/iai:DeleteFace","name/iai:DeletePerson","name/iai:EstimateCheckSimilarPersonCostTime","name/iai:GetCheckSimilarPersonJobIdList","name/iai:GetPersonBaseInfo","name/iai:GetPersonGroupInfo","name/iai:GetSimilarPersonResult","name/iai:GetUpgradeGroupFaceModelVersionJobList","name/iai:GetUpgradeGroupFaceModelVersionResult","name/iai:ModifyPersonBaseInfo","name/iai:RevertGroupFaceModelVersion"]}]}
授予控制台权限
授予子账户所有控制台权限
控制台绝大部分接口是可以直接访问的,有部分涉及服务使用和计费变更的接口需要授权才可以使用。通过以下方式给这些接口授予 * 后子账户就可以使用所有控制台权限。
{"version": "2.0","statement": [{"effect": "allow","resource": ["*"],"action": ["name/iai:ConsoleGetGroupList","name/iai:ConsoleGetPersonList","name/iai:ConsoleSearchFaces","name/iai:ConsoleSearchPersons","name/iai:ConsoleModifyPersonBaseInfo","name/iai:ActivateService","name/iai:SetRenewFlag","name/iai:SwitchQpsCountMode"]}]}
授予某些人员库的控制台权限
如果只想给子账户授予某些人员库的使用权限,可以参照以下示例,给资源级接⼝ ConsoleGetGroupList、ConsoleGetPersonList、ConsoleSearchFaces、ConsoleSearchPersons 授予⼈员库 test * 权限。
{"version": "2.0","statement": [{"effect": "allow","resource": ["qcs::iai:::groupid/test*"],"action": ["name/iai:ConsoleGetGroupList","name/iai:ConsoleGetPersonList","name/iai:ConsoleSearchFaces","name/iai:ConsoleSearchPersons"]},{"effect": "allow","resource": ["*"],"action": ["name/iai:ModifyPersonBaseInfo","name/iai:ActivateService","name/iai:SetRenewFlag","name/iai:SwitchQpsCountMode"]}]}