API 文档

子账号访问管理

最近更新时间:2021-01-21 16:58:57

人脸识别已经接入了腾讯云云资源访问管理系统 CAM(Cloud Access Management),您可以在 访问管理控制台 进行用户组、用户、角色、策略等一系列相关管理操作。

通过设置 CAM 策略, 您可以控制哪些子用户或协作者账号拥有人脸识别 API 和控制台的查看和操作权限。

目前人脸识别支持服务级、接口级和资源级授权三种方式:

  • 服务级授权:您可以将预设全读写策略 QcloudFrFullAcess 授予子账户,其将能够和您一样访问人脸识别所有功能。如果您只授予预设只读策略 QcloudFrReadOnlyAcess,其将只能执行只读操作。
  • 接口级授权:您可以在 CAM 控制台中按接口维度给子账户授权,子账户将只能使用您已授权的接口。可参考使用示例中授予单个接口权限的操作 授予单个接口权限
  • 资源级授权:您可以在 CAM 控制台中按人员库资源维度给子账户授权,子账户将只能操作您已授权的人员库。可参考 支持资源级授权的接口列表

支持资源级授权的接口列表

API 名 API 描述 资源类型 资源六段式示例
CheckSimilarPerson 人员查重 人员库 ID qcs::iai:$region:$account:groupid/* qcs::iai:$region:$account:groupid/$groupId
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
注意:

文档上的其他接口均为接口级。

使用示例

服务级、接口级和资源级均需要在 访问管理控制台 中进行授权。创建自定义策略的方式可参考 创建自定义策略

在接口级和资源级接口均可以按照以下的方式给子账户授权。如果 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:Modify*",
              "name/iai:Search*",
              "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:GetGroupList",
              "name/iai:GetPersonList",
              "name/iai:SearchFaces",
              "name/iai:SearchPersons",
              "name/iai:ModifyPersonBaseInfo",
              "name/iai:OpenService",
              "name/iai:SetRenewFlag",
              "name/iai:SwitchQpsCountMode"
          ]
      }
  ]
}

授予某些人员库的控制台权限

如果只想给子账户授予某些人员库的使用权限,可以参照以示例式,给资源级接口 GetGroupList、GetPersonList、SearchFaces、SearchPersons 授予人员库 test * 权限。

{
  "version": "2.0",
  "statement": [
      {
          "effect": "allow",
          "resource": [
              "qcs::iai:::groupid/test*"
          ],
          "action": [
              "name/iai:GetGroupList",
              "name/iai:GetPersonList",
              "name/iai:SearchFaces",
              "name/iai:SearchPersons"
          ]
      },
      {
              "effect": "allow",
          "resource": [
              "*"
          ],
          "action": [
              "name/iai:ModifyPersonBaseInfo",
              "name/iai:OpenService",
              "name/iai:SetRenewFlag",
              "name/iai:SwitchQpsCountMode"
          ]
      }
  ]
}