Spec-Zone.ru › Chef 18

Организации и группы

[править на GitHub]

Сервер Chef Infra использует контроль доступа на основе ролей (RBAC) для ограничения доступа к объектам — узлам, средам, ролям, пакетам данных, кулинариям и так далее. Это гарантирует, что только авторизованные пользователи и/или клиенты Chef Infra Client имеют доступ к серверу Chef Infra. Доступ к объектам на сервере Chef Infra является детализированным, позволяя определять доступ по типу объекта, объекту, группе, пользователю и организации. Сервер Chef Infra использует разрешения для определения того, как пользователь может взаимодействовать с объектом после того, как он был авторизован для этого.

Сервер Chef Infra использует организации, группы и пользователей для определения контроля доступа на основе ролей:

Функция Описание

image

Организация — это сущность верхнего уровня для контроля доступа на основе ролей в сервере Chef Infra. Каждая организация содержит стандартные группы (admins, clients, и users, а также billing_admins для размещённого сервера Chef Infra), по крайней мере одного пользователя и по крайней мере один узел (на котором установлен Chef Infra Client). Сервер Chef Infra поддерживает несколько организаций. Сервер Chef Infra включает в себя одну стандартную организацию, которая определяется во время установки. Дополнительные организации могут быть созданы после первоначальной настройки и конфигурации сервера Chef Infra.

image

Группа используется для определения доступа к типам объектов и объектам на сервере Chef Infra, а также для назначения разрешений, которые определяют, какие типы задач доступны членам этой группы, авторизованным для их выполнения. Группы настраиваются на организационном уровне.

Отдельные пользователи, являющиеся членами группы, унаследуют разрешения, назначенные группе. Сервер Chef Infra включает следующие стандартные группы: admins, clients, и users. Для пользователей размещённого сервера Chef Infra предоставляется дополнительная стандартная группа: billing_admins.

image

Пользователь — это любой неадминистратор, который будет управлять данными, загружаемыми на сервер Chef Infra со стационарного компьютера или который будет входить в веб-интерфейс управления консолью Chef. Сервер Chef Infra включает одного стандартного пользователя, который определяется при установке и автоматически назначается в группу admins.

image

Клиент — это субъект, имеющий разрешение на доступ к серверу Chef Infra. Клиентом чаще всего является узел (на котором работает Chef Infra Client), но также может быть рабочая станция (на которой работает knife) или другое устройство, настроенное для использования API сервера Chef Infra. Каждый запрос к серверу Chef Infra, который выполняется клиентом, использует закрытый ключ для аутентификации, который должен быть авторизован открытым ключом на сервере Chef Infra.

Когда пользователь выполняет запрос к серверу Chef Infra с помощью API сервера Chef Infra, разрешение на выполнение этого действия определяется следующим процессом:

  1. Проверка наличия разрешения у пользователя на тип объекта
  2. Если нет, рекурсивная проверка, является ли пользователь членом группы безопасности, имеющей разрешение на этот объект
  3. Если да, разрешить пользователю выполнить действие

Разрешения управляются с помощью надстройки консоли управления Chef в веб-интерфейсе сервера Chef Infra.

Организации

Один экземпляр сервера Chef Infra может поддерживать множество организаций. Каждая организация имеет уникальный набор групп и пользователей. Каждая организация управляет уникальным набором узлов, на которых установлен и настроен Chef Infra Client для взаимодействия с одной организацией на сервере Chef Infra.

image

Пользователь может принадлежать к нескольким организациям при следующих условиях:

  • Контроль доступа на основе ролей настраивается на уровне организации
  • Для взаимодействия одного пользователя с сервером Chef Infra с помощью knife из того же chef-repo этому пользователю может потребоваться отредактировать файл config.rb перед этим взаимодействием

Использование нескольких организаций в сервере Chef Infra гарантирует, что один и тот же набор инструментов, шаблоны кодирования и практики, физическое оборудование и поддержка продукта применяются во всей компании, даже когда:

  • Необходимо поддерживать несколько групп продуктов — каждая группа продуктов может иметь свои собственные требования безопасности, график и цели
  • Обновления происходят по разным графикам — узлы в одной организации управляются полностью независимо от узлов в другой
  • У отдельных команд есть противоречивые потребности в объектах и типах объектов — пакеты данных, среды, роли и кулинарии уникальны для каждой организации, даже если они имеют одинаковое имя

Разрешения

Разрешения на сервере Chef Infra используются для определения того, как пользователи и группы могут взаимодействовать с объектами на сервере. Разрешения настраиваются на организационном уровне.

Разрешения на объекты

Сервер Chef Infra включает следующие разрешения на объекты:

Разрешение Описание
Удалить Используйте разрешение Удалить, чтобы определить, какие пользователи и группы могут удалить объект. Это разрешение необходимо для любого пользователя, который использует аргумент knife [object] delete [object_name] для взаимодействия с объектами на сервере Chef Infra.
Предоставить Используйте разрешение Предоставить, чтобы определить, какие пользователи и группы могут настроить разрешения на объект. Это разрешение необходимо для любого пользователя, который настраивает разрешения, используя вкладку Администрирование в консоли управления Chef.
Читать Используйте разрешение Читать, чтобы определить, какие пользователи и группы могут просматривать подробности объекта. Это разрешение необходимо для любого пользователя, который использует аргумент knife [object] show [object_name] для взаимодействия с объектами на сервере Chef Infra.
Обновить Используйте разрешение Обновить, чтобы определить, какие пользователи и группы могут изменять подробности объекта. Это разрешение необходимо для любого пользователя, который использует аргумент knife [object] edit [object_name] для взаимодействия с объектами на сервере Chef Infra, а также для любого Chef Infra Client для сохранения данных узла на сервере Chef Infra по завершении выполнения Chef Infra Client.

Глобальные разрешения

Сервер Chef Infra включает следующие глобальные разрешения:

Разрешение Описание
Создать Используйте глобальное разрешение Создать, чтобы определить, какие пользователи и группы могут создавать следующие типы объектов сервера: кулинарии, пакеты данных, среды, узлы, роли и теги. Это разрешение необходимо для любого пользователя, который использует аргумент knife [object] create для взаимодействия с объектами на сервере Chef Infra.
Список Используйте глобальное разрешение Список, чтобы определить, какие пользователи и группы могут просматривать следующие типы объектов сервера: кулинарии, пакеты данных, среды, узлы, роли и теги. Это разрешение необходимо для любого пользователя, который использует аргумент knife [object] list для взаимодействия с объектами на сервере Chef Infra.

Эти разрешения устанавливают стандартные разрешения для следующих типов объектов сервера Chef Infra: клиенты, кулинарии, пакеты данных, среды, группы, узлы, роли и песочницы.

Разрешения ключей клиента

Примечание

Это необходимо только после миграции клиента с одного сервера Chef Infra на другой. Разрешения должны быть сброшены для ключей клиента после миграции.

Ключи должны иметь DELETE, GRANT, READ и UPDATE разрешения.

Используйте следующий код для установки правильных разрешений:

#!/usr/bin/env ruby
require 'chef/knife'

#previously knife.rb
Chef::Config.from_file(File.join(Chef::Knife.chef_config_dir, 'knife.rb'))

rest = Chef::ServerAPI.new(Chef::Config[:chef_server_url])

Chef::Node.list.each do |node|
  %w(read update delete grant).each do |perm|
    ace = rest.get("nodes/#{node[0]}/_acl")[perm]
    ace['actors'] << node[0] unless ace['actors'].include?(node[0])
    rest.put("nodes/#{node[0]}/_acl/#{perm}", perm => ace)
    puts "Client \"#{node[0]}\" granted \"#{perm}\" access on node \"#{node[0]}\""
  end
end

Сохраните его как скрипт Ruby — chef_server_permissions.rb, например, — в каталоге .chef/scripts, расположенном в chef-repo, а затем запустите команду knife, аналогичную:

knife exec chef_server_permissions.rb

Knife ACL

Плагин knife knife-acl предоставляет тонкий подход к модификации разрешений, оборачивая API-вызовы к конечной точке _acl и упрощая управление такими изменениями разрешений.

Предупреждение

Chef Manage устарел и больше не находится в активной разработке. Он поддерживается на установках Chef Automate до версии 1.8 и заменён Chef Automate 2.0. Обратитесь к своему представителю по работе с клиентами Chef для получения информации об обновлении вашей системы. См. нашу документацию Automate для получения дополнительной информации о Chef Automate 2.

Данный документ больше не поддерживается.

knife-acl и веб-интерфейс Chef Manage несовместимы. После использования knife-acl вам необходимо прекратить использовать веб-интерфейс Chef Manage, поскольку могут возникнуть несовместимости.

Группы

Сервер Chef Infra включает следующие стандартные группы:

Группа Описание
admins Группа admins определяет список пользователей, имеющих административные права на все объекты и типы объектов для одной организации.
billing_admins Группа billing_admins определяет список пользователей, имеющих разрешение на управление информацией о платёжных данных. Это разрешение существует только для хостинг-сервера Chef Infra.
clients Группа clients определяет список узлов, на которых установлен Chef Infra Client и которые находятся под управлением Chef. В общем случае, это разрешение можно рассматривать как «все нечеловеческие акторы — в подавляющем большинстве случаев Chef Infra Client — которые получают данные из сервера Chef и/или загружают данные на него». Новые экземпляры Chef Infra Client автоматически добавляются в эту группу.
public_key_read_access Группа public_key_read_access определяет, какие пользователи и клиенты имеют права чтения к ключевым конечным точкам API сервера Chef Infra.
users Группа users определяет список пользователей, которые используют knife и консоль управления Chef для взаимодействия с объектами и типами объектов. В общем случае, это разрешение можно рассматривать как «все неадминистративные человеческие акторы, работающие с данными, которые загружаются на сервер Chef и/или скачиваются с него».

Пример стандартных разрешений

В следующих разделах показаны стандартные разрешения, назначенные сервером Chef Infra для групп admins, billing_admins, clients, и users.

Примечание

Создателю объекта на сервере Chef Infra назначаются разрешения create, delete, grant, read, и update к этому объекту.

admins

Группе admins назначены следующие разрешения:

Группа Создавать Удалять Предоставлять Читать Изменять
admins да да да да да
clients да да да да да
users да да да да да

billing_admins

Группе billing_admins назначены следующие разрешения:

billing_admins

Группе billing_admins назначены следующие разрешения:

Группа Создавать Удалять Читать Изменять
billing_admins нет нет да да

clients

Группе clients назначены следующие разрешения:

Объект Создавать Удалять Читать Изменять
clients нет нет нет нет
cookbooks нет нет да нет
cookbook_artifacts нет нет да нет
data нет нет да нет
environments нет нет да нет
nodes да нет да нет
organization нет нет да нет
policies нет нет да нет
policy_groups нет нет да нет
roles нет нет да нет
sandboxes нет нет нет нет

Доступ для чтения публичных ключей

Группа public_key_read_access контролирует, какие пользователи и клиенты имеют права на чтение к следующим конечным точкам:

  • GET /clients/CLIENT/keys
  • GET /clients/CLIENT/keys/KEY
  • GET /users/USER/keys
  • GET /users/USER/keys/

По умолчанию группа public_key_read_access предоставляет всем членам группы users и clients разрешение на доступ к этим конечным точкам:

Группа Создавать Удалять Предоставлять Читать Изменять
admins нет нет нет нет нет
clients да да да да да
users да да да да да

users

Группе users назначены следующие разрешения:

users

Группе users назначены следующие разрешения:

Объект Создавать Удалять Читать Изменять
clients нет да да нет
cookbooks да да да да
cookbook_artifacts да да да да
data да да да да
environments да да да да
nodes да да да да
organization нет нет да нет
policies да да да да
policy_groups да да да да
roles да да да да
sandboxes да нет нет нет

chef-validator

Каждый запрос от Chef Infra Client к серверу Chef Infra должен быть аутентифицированным запросом с использованием API сервера Chef Infra и закрытого ключа. Когда Chef Infra Client делает запрос на сервер Chef Infra, каждый запрос аутентифицируется с помощью закрытого ключа, расположенного в /etc/chef/client.pem.

chef-validator имеет право на следующие действия в начале выполнения Chef Infra Client. После регистрации Chef Infra Client на сервере Chef Infra этот Chef Infra Client добавляется в группу clients:

Объект Создавать Удалять Читать Изменять
clients да нет нет нет

Администраторы сервера

Группа server-admins — это глобальная группа, которая предоставляет своим членам разрешение на создание, чтение, изменение и удаление учётных записей пользователей, за исключением суперпользовательских учётных записей. Группа server-admins полезна для пользователей, которые отвечают за ежедневное администрирование сервера Chef Infra, особенно управление пользователями с помощью подкоманды knife user. Прежде чем членов можно добавить в группу server-admins, у них должна быть учётная запись пользователя на сервере Chef Infra.

Сценарий

На сервере Chef Infra существуют следующие учётные записи пользователей: pivotal (суперпользователь), alice, bob, carol, и dan. Выполните следующую команду для просмотра списка пользователей на сервере Chef Infra:

chef-server-ctl user-list

и она возвращает тот же список пользователей:

pivotal
alice
bob
carol
dan

Элис — член команды ИТ, в обязанности которой входит ежедневное администрирование сервера Chef Infra, в частности управление учётными записями пользователей на сервере Chef Infra, используемыми остальной организацией. С рабочей станции Элис выполняет следующую команду:

knife user list -c ~/.chef/alice.rb

и она возвращает следующую ошибку:

ERROR: You authenticated successfully to <chef_server_url> as alice
       but you are not authorized for this action
Response: Missing read permission

Элис не является суперпользователем и не имеет разрешений на других пользователей, поскольку учётные записи пользователей глобальны для организаций на сервере Chef Infra. Давайте добавим Элис в группу server-admins:

chef-server-ctl grant-server-admin-permissions alice

и она возвращает следующий ответ:

User alice was added to server-admins.

Теперь Элис может создавать, читать, изменять и удалять учётные записи пользователей на сервере Chef Infra, даже для организаций, к которым Элис не принадлежит. С рабочей станции Элис повторно выполняет следующую команду:

knife user list -c ~/.chef/alice.rb

которая теперь возвращает:

pivotal
alice
bob
carol
dan

Теперь Элис — администратор сервера и может использовать следующие подкоманды knife для управления пользователями на сервере Chef Infra:

  • knife user-create
  • knife user-delete
  • knife user-edit
  • knife user-list
  • knife user-show

Например, Элис выполняет следующую команду:

knife user edit carol -c ~/.chef/alice.rb

и $EDITOR открывается, где Элис вносит изменения и сохраняет их.

Суперпользовательские учётные записи

Суперпользовательские учётные записи не могут управляться пользователями, которые принадлежат к группе server-admins. Например, Элис пытается удалить суперпользовательскую учётную запись pivotal:

knife user delete pivotal -c ~/.chef/alice.rb

и возвращается следующая ошибка:

ERROR: You authenticated successfully to <chef_server_url> as user1
       but you are not authorized for this action
Response: Missing read permission

Действие Элис неавторизовано даже при членстве в группе server-admins.

Управление группой server-admins

Членство в группе server-admins управляется набором подкоманд chef-server-ctl:

  • chef-server-ctl grant-server-admin-permissions
  • chef-server-ctl list-server-admins
  • chef-server-ctl remove-server-admin-permissions

Добавление членов

Подкоманда grant-server-admin-permissions используется для добавления пользователя в группу server-admins. Выполняйте команду один раз на каждого добавляемого пользователя.

Эта подкоманда имеет следующий синтаксис:

chef-server-ctl grant-server-admin-permissions USER_NAME

где USER_NAME — пользователь, который добавляется в список администраторов сервера.

Например:

chef-server-ctl grant-server-admin-permissions bob

возвращает:

User bob was added to server-admins. This user can now list,
read, and create users (even for orgs they are not members of)
for this Chef Infra Server.

Удаление членов

Подкоманда remove-server-admin-permissions используется для удаления пользователя из группы server-admins. Выполняйте команду один раз на каждого удаляемого пользователя.

Эта подкоманда имеет следующий синтаксис:

chef-server-ctl remove-server-admin-permissions USER_NAME

где USER_NAME — пользователь, который удаляется из списка администраторов сервера.

Например:

chef-server-ctl remove-server-admin-permissions bob

возвращает:

User bob was removed from server-admins. This user can no longer
list, read, and create users for this Chef Infra Server except for where
they have default permissions (such as within an org).

Список участников

Подкоманда list-server-admins используется для возвращения списка пользователей, являющихся членами группы server-admins.

Эта подкоманда имеет следующий синтаксис:

chef-server-ctl list-server-admins

и вернёт список пользователей, похожий на:

pivotal
alice
bob
carol
dan

Управление организациями

Используйте команды org-create, org-delete, org-list, org-show, org-user-add и org-user-remove для управления организациями.

org-create

Подкоманда org-create используется для создания организации. (Ключ проверки для организации возвращается в STDOUT при создании организации с помощью этой команды.)

Синтаксис

Эта подкоманда имеет следующий синтаксис:

chef-server-ctl org-create ORG_NAME "ORG_FULL_NAME" (options)

где:

  • Имя должно начинаться с маленькой буквы или цифры, может содержать только маленькие буквы, цифры, дефисы и символы подчеркивания, и должно быть от 1 до 255 символов. Например: chef.
  • Полное имя должно начинаться с символа, отличного от пробела, и должно быть от 1 до 1023 символов. Например: "Chef Software, Inc.".

Опции

Эта подкоманда имеет следующие опции:

-a USER_NAME, --association_user USER_NAME

Связать пользователя с организацией и добавить его в группы безопасности admins и billing_admins.

-f FILE_NAME, --filename FILE_NAME

Записать ORGANIZATION-validator.pem в FILE_NAME вместо вывода его в STDOUT.

org-delete

Подкоманда org-delete используется для удаления организации.

Синтаксис

Эта подкоманда имеет следующий синтаксис:

chef-server-ctl org-delete ORG_NAME

org-list

Подкоманда org-list используется для отображения списка всех организаций, присутствующих на сервере Chef Infra.

Синтаксис

Эта подкоманда имеет следующий синтаксис:

chef-server-ctl org-list (options)

Опции

Эта подкоманда имеет следующие опции:

-a, --all-orgs

Показать все организации.

-w, --with-uri

Показать соответствующие URI.

org-show

Подкоманда org-show используется для отображения подробностей организации.

Синтаксис

Эта подкоманда имеет следующий синтаксис:

chef-server-ctl org-show ORG_NAME

org-user-add

Подкоманда org-user-add используется для добавления пользователя в организацию.

Синтаксис

Эта подкоманда имеет следующий синтаксис:

chef-server-ctl org-user-add ORG_NAME USER_NAME (options)

Опции

Эта подкоманда имеет следующие опции:

--admin

Добавить пользователя в группу admins.

org-user-remove

Подкоманда org-user-remove используется для удаления пользователя из организации.

Синтаксис

Эта подкоманда имеет следующий синтаксис:

chef-server-ctl org-user-remove ORG_NAME USER_NAME (options)

© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/server/server_orgs/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API