Отзыв роли на ресурс

Если вы хотите запретить субъекту доступ к ресурсу, отзовите у него соответствующие роли на этот ресурс и на ресурсы, от которых наследуются права доступа. Подробнее читайте в разделе Как устроено управление доступом в Яндекс.Облаке.

Примечание

Если вам надо временно отнять все права доступа у пользователя с аккаунтом на Яндексе, вы можете отозвать только роль resource-manager.clouds.member. У пользователя останутся все остальные роли, но он не сможет выполнять никаких операций с ресурсами в облаке. Когда вы снова добавите пользователя в облако, права доступа для него уже будут настроены.

Отозвать роль

В консоли управления можно отозвать роль только на облако или каталог:

  1. Откройте страницу Управление доступом для выбранного облака. Если необходимо, переключитесь на другое облако.

  2. Выберите пользователя, которому хотите назначить роль, нажмите значок image и выберите Настроить роли.

  3. Нажмите на крестик рядом с ролью, чтобы удалить ее. В блоке Роли на облако <имя облака> вы можете удалять роли, назначенные пользователю на это облако. В блоке Роли в каталогах вы можете удалять роли, назначенные пользователю на каталоги.

Чтобы отозвать роль у субъекта, удалите соответствующую привязку прав доступа для соответствующего ресурса:

  1. Посмотрите, кому и какие роли назначены на ресурс:

    yc <SERVICE-NAME> <RESOURCE> list-access-bindings <RESOURCE-NAME>|<RESOURCE-ID>
    

    Например, посмотрите привязки прав доступа на каталог default:

    $  yc resource-manager folder list-access-bindings default
    +---------------------+----------------+----------------------+
    |       ROLE ID       |  SUBJECT TYPE  |      SUBJECT ID      |
    +---------------------+----------------+----------------------+
    | editor              | serviceAccount | ajepg0mjas06siuj5usm |
    | viewer              | userAccount    | aje6o61dvog2h6g9a33s |
    +---------------------+----------------+----------------------+
    
  2. Чтобы удалить привязку прав доступа, выполните команду:

    yc <SERVICE-NAME> <RESOURCE> remove-access-binding <RESOURCE-NAME>|<RESOURCE-ID> \
        --role <ROLE-ID> \
        --subject <SUBJECT-TYPE>:<SUBJECT-ID>
    

    где:

    • <SERVICE-NAME> — имя сервиса, которому принадлежит ресурс, например resource-manager.
    • <RESOURCE> — категория ресурса, например folder.
    • <RESOURCE-NAME> — имя ресурса. Вы можете указать ресурс по имени или идентификатору.
    • <RESOURCE-ID> — идентификатор ресурса.
    • <ROLE-ID> — идентификатор роли, которую надо отозвать, например resource-manager.clouds.owner.
    • <SUBJECT-TYPE> — тип субъекта, у которого отзывается роль.
    • <SUBJECT-ID> — идентификатор субъекта.

    Например, чтобы отозвать роль у пользователя с идентификатором aje6o61dvog2h6g9a33s:

    $ yc resource-manager folder remove-access-binding default \
        --role viewer \
        --subject userAccount:aje6o61dvog2h6g9a33s
    

Чтобы отозвать роль у субъекта на ресурс, удалите соответствующую привязку прав доступа. Например, отзовите у пользователя роль на каталог b1gvmob95yysaplct532:

  1. Посмотрите, кому и какие роли назначены на ресурс с помощью метода listAccessBindings:

    $ export FOLDER_ID=b1gvmob95yysaplct532
    $ export IAM_TOKEN=CggaATEVAgA...
    $ curl -H "Authorization: Bearer ${IAM_TOKEN}" "https://resource-manager.api.cloud.yandex.net/resource-manager/v1/folders/${FOLDER_ID}:listAccessBindings"
    
    {
     "accessBindings": [
      {
       "subject": {
        "id": "ajei8n54hmfhuk5nog0g",
        "type": "userAccount"
       },
       "roleId": "editor"
      }
     ]
    }
    
  2. Сформируйте тело запроса, например в файле body.json. В теле запроса укажите, какую привязку прав доступа необходимо удалить.

    body.json:

    {
        "accessBindingDeltas": [{
            "action": "REMOVE",
            "accessBinding": {
                "roleId": "editor",
                "subject": {
                    "id": "ajei8n54hmfhuk5nog0g",
                    "type": "userAccount"
                    }
                }
            }
        ]
    }
    
  3. Отзовите роль, удалив указанную привязку прав доступа:

    $ export FOLDER_ID=b1gvmob95yysaplct532
    $ export IAM_TOKEN=CggaATEVAgA...
    $ curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer ${IAM_TOKEN}" \
        -d @body.json \
        "https://resource-manager.api.cloud.yandex.net/resource-manager/v1/folders/${FOLDER_ID}:updateAccessBindings"