Руководство пользователя IAM
Примечание
В данном руководстве показано, как выполнять важные административные операции. Вы добавите членов в политики v2, управляемые Chef, удалите устаревшую политику и создадите политику Team Admin v2, которая позволит администраторам команд управлять своими пользователями и командами.
Просмотр политик
После входа в Chef Automate выберите вкладку Настройки в верхней панели навигации, а затем найдите и выберите раздел Policies в левой навигации.
В этом разделе вы можете просмотреть все ваши политики v2.
Данный дисплей политик включает следующее:
- Новые политики по умолчанию, управляемые Chef: Администратор, Интеграция, Редакторы и Просматривающие.
- Импортированные политики v1 по умолчанию — теперь называемые устаревшими политиками — в новом формате v2 и помеченные префиксом
[Legacy]. - Импортированные пользовательские политики v1, которые вы создали, помеченные префиксом
[Legacy]и суффиксом(custom).
Конвертация политик
Если вы начали работу с IAM v1 и мигрировали свои политики IAM v1 в IAM v2, вам следует перенести всех членов ваших устаревших политик IAM v1 в соответствующие политики IAM v2, а затем удалить устаревшие политики IAM v1.
Чтобы удалить устаревшую политику, откройте меню любой пользовательской политики, расположенной в конце строки политики, и выберите Удалить политику из меню.
Если члены все еще прикреплены к политике, появится предупреждение, так как удаление политики нарушает доступ для всех ее членов. Однако вы все равно сможете удалить политику.
Следующие разделы объясняют, как использовать управляемые Chef политики и как создавать пользовательские политики.
Использование политик, управляемых Chef
В этом примере конвертации вы создадите двух локальных пользователей и добавите их в команды по умолчанию, которые автоматически включены в политики по умолчанию. Обратите внимание, что вы также можете добавлять пользователей напрямую в политики без промежуточных команд, но использование команд может сделать управление вашей системой более гибким.
Создание пользователей
Следуйте инструкциям на странице Создание пользователей, чтобы:
- Создать локального пользователя с именем пользователя
test_viewer. - Создать локального пользователя с именем пользователя
test_editor.
Добавление пользователей в команды
Выберите Teams из левой навигации вкладки Настройки. По умолчанию предоставляются три команды: admins, viewers, и editors.
Следуйте инструкциям на странице Добавление пользователей в команду, чтобы:
- Добавить пользователя
test_viewerв управляемую Chef командуviewers. - Добавить пользователя
test_editorв управляемую Chef командуeditors.
После обновления эти команды будут частью политик Viewers и Editors соответственно. По умолчанию предоставляется политика Viewers, поэтому вы можете быстро предоставить доступ для чтения ко всему в Chef Automate, за исключением административных ресурсов. Аналогично, предоставляется политика Editors, поэтому вы можете быстро предоставить полный доступ ко всему в Chef Automate, за исключением административных ресурсов. После этого шага пользователи test_viewer и test_editor могут войти с соответствующим доступом к системе.
Создание пользовательских политик
Управляемые Chef политики дают вам отправную точку для разрешений. Возможно, вам захочется создать более детальные политики, адаптированные к потребностям вашей организации. Определение собственных политик должно выполняться из командной строки.
Предположим, что вы, как администратор, хотите делегировать часть своих задач коллеге, но не предоставлять им полный доступ администратора. В этом случае вы можете создать политику под названием Team Devops Managers, которая предоставляет ее членам некоторые, но не все, административные привилегии. Создайте файл JSON в редакторе по вашему выбору. Следуя синтаксису JSON, начните с свойства name.
См. пример полной политики JSON в конце этого раздела: Полный пример JSON-политики
"name": "Team Devops Managers",
Поле name предназначено для чтения человеком. Когда вам нужно сослаться на политику в командах, вам необходимо знать идентификатор политики. Давайте присвоим этой политике значение идентификатора team-managers-devops.
"id": "team-managers-devops",
Кроме того, мы можем разрешать действия для этой политики, как и для любого другого ресурса IAM, назначив ее одному или нескольким проектам. Если мы оставим массив проектов пустым, то укажем, что политика не назначена. Например, любой, у кого есть разрешение на просмотр неназначенных политик, может просмотреть эту политику.
"projects": [],
Предположим, что вы также хотите, чтобы пользователь Bob и любой пользователь в команде gamma были авторизованы по этой политике. Эта группировка включает массив members, как показано ниже.
"members": [
"user:local:bob",
"team:local:gamma",
],
Далее, вы укажете сами разрешения — которые в IAM v2 являются statements — объявленные в качестве массива. Заявление позволяет нам указать, какие actions разрешено выполнять пользователю над ресурсами, которые были назначены в project. Поле projects в заявлении — это массив, который может содержать более одного существующего проекта, подстановочный знак * для указания разрешения на ресурсы любого проекта или (unassigned) для указания разрешения на ресурсы, которые не были назначены проекту.
Обратите внимание, что свойство projects в утверждениях определяет разрешение на ресурсы внутри утверждения (здесь это iam:users и iam:teams), а не на саму политику, и его нельзя оставлять пустым. Дополнительную информацию о проектах см. в документации Проекты в руководстве IAM.
В этом случае нам нужно только одно утверждение, предоставляющее доступ к действиям get, list и update для пользователей и команд, которые были назначены проекту project-devops.
{
"effect": "ALLOW",
"actions": [
"iam:users:update",
"iam:users:list",
"iam:users:get",
"iam:teams:update",
"iam:teams:list",
"iam:teams:get"
],
"projects": ["project-devops"],
},
Полный пример JSON-политики
{
"name": "Team Devops Managers",
"id": "team-managers-devops",
"projects": [],
"members": [
"user:local:bob",
"team:local:gamma"
],
"statements": [
{
"effect": "ALLOW",
"actions": [
"iam:users:update",
"iam:users:list",
"iam:users:get",
"iam:teams:update",
"iam:teams:list",
"iam:teams:get"
],
"projects": ["project-devops"]
}
]
}
Сохраните свой файл JSON и обратитесь к справочнику API политик IAM, чтобы отправить эти данные политики в Chef Automate.
Членство в политике
Пользователи, команды и токены API могут быть членами политики. Как пользователи, так и команды могут быть локальными или внешними, управляемыми с помощью LDAP или SAML.
Локальные пользователи и команды
Локальные пользователи и команды управляются непосредственно Chef Automate.
Для добавления или удаления членов перейдите к списку политик на вкладке Настройки, а затем выберите политику в списке, чтобы открыть ее подробности. Выберите Члены, чтобы просмотреть текущее членство. Используйте кнопку Добавить членов, чтобы открыть список кандидатов в члены. Этот список содержит всех локальных членов (как пользователей, так и команд), которые не являются членами этой политики. Если все локальные члены уже включены в политику, этот список будет пустым. Выберите членов, которых вы хотите добавить в политику. Используйте кнопку Добавить членов, чтобы завершить операцию. Это вернет вас к деталям политики, отобразив обновленный список членства.
Выражения для членов
Выражения для членов необходимы для внешних управляемых пользователей и команд, а также для токенов API.
Информация о пользователях LDAP и SAML сохраняется вне Chef Automate. Вам необходимо вручную ввести пользователя или команду, квалифицированную провайдером. Для этого откройте любую политику из списка Политики, затем выберите Члены. Нажмите Добавить членов, чтобы открыть список локальных пользователей и команд-кандидатов. В нижней части страницы выберите кнопку Добавить выражение члена.
Примечание
Введите выражение члена в формате team:<type>:<name> или user:<type>:<name>. Обратите внимание, что эти выражения чувствительны к регистру.
- Выражение
<type>— это либоldap, либоsaml. - Выражение
<name>— это имя пользователя или команды, известное внешнему поставщику идентификации. Например, это допустимое выражение членаteam:ldap:editors_team_1, предполагая, что командаeditors_team_1известна вашему поставщику идентификации.
В качестве альтернативы вы можете добавить все команды в политику, используя подстановочный знак в качестве последнего члена в выражении члена: team:ldap:* или team:saml:*.
Диалоговое окно выражения члена также поддерживает токены. Введите токен, используя выражение token:<id>. Чтобы найти ID токена, посетите страницу Токены API.
Проекты
Проекты используются для группировки и разрешения ресурсов Chef Automate, а также обработанных данных, в частности отчетов о соответствии, событий Chef Infra Server и узлов инфраструктуры.
Проекты можно управлять через список проектов на вкладке Настройки и они состоят из ID, имени и набора правил импорта. Правила импорта проекта — это списки условий, используемые только при назначении обработанных ресурсов проектам, поэтому они не имеют отношения к назначению ресурсов IAM, таких как команды или роли.
Настройка лимита проектов
По умолчанию Chef Automate ограничивает вас 300 проектами. Вы можете увеличить лимит проектов, используя командную строку.
Сначала запишите файл с новым лимитом проектов:
cat << EOF > authz.toml
[auth_z.v1.sys.service]
project_limit = <desired-max-projects>
EOF
Затем обновите существующую конфигурацию Chef Automate:
chef-automate config patch authz.toml
Примечание: в результате увеличения лимита проектов время загрузки в пользовательском интерфейсе может замедлиться.
Создание проекта
Чтобы создать проект, перейдите к списку проектов на вкладке Настройки и выберите Создать проект. Вам потребуется указать имя, и вы можете необязательно изменить ID. Необходимо создать проект, прежде чем вы сможете назначить какие-либо ресурсы.
При создании проекта система создаёт проект, а также три дополнительных политики для вашего удобства:
| Название политики | Идентификатор политики | Связанная роль |
|---|---|---|
<project-name> Владельцы проекта |
<project-name>-project-owners | Владелец проекта |
<project-name> Редакторы проекта |
<project-name>-project-editors | Редактор |
<project-name> Просмотрщики проекта |
<project-name>-project-viewers | Просмотрщик |
Эти политики описаны более подробно в разделе Политики проекта.
Назначение команд и токенов проектам
Проекты могут быть назначены созданным командам или токенам Automate при создании или обновлении.
Чтобы назначить команду проекту, выберите команду из списка Команды, а затем выберите Детали. Аналогично, чтобы назначить токен проекту, выберите токен из списка токенов API, а затем выберите Детали. В обоих случаях вы можете выбрать проекты из выпадающего списка проектов для назначения.
Вы также можете назначать команды и токены проектам при их создании. В модальном окне создания выберите все проекты, к которым должен принадлежать новый ресурс.
Если вы хотите делегировать владение проектом другому пользователю, чтобы он мог назначать ресурсы, необходимо сделать этого пользователя Владельцем проекта этого проекта.
Назначение импортированных ресурсов проектам
В то время как локальные команды и токены Automate могут быть непосредственно назначены проекту, импортированные ресурсы должны быть назначены проектам с помощью правил импорта.
Правила импорта проекта используются для сопоставления импортированных ресурсов с проектами в Automate. Правило импорта содержит условия, определяющие, должен ли импортированный ресурс быть перемещён в проект правила. Каждое условие содержит атрибут, оператор и значение. Подробные сведения о управлении правилами проекта см. в справочнике API правил проекта.
В этом примере, после создания проекта с идентификатором project-devops, вы добавите правило импорта в этот новый проект. Вы обновите проекты, чтобы применить это новое правило проекта, что приведёт к ассоциации всех соответствующих импортированных ресурсов с project-devops. Затем вы будете использовать глобальный фильтр проекта для фильтрации импортированных данных по project-devops.
Сначала определите, какие импортированные ресурсы должны принадлежать проекту. В этом примере мы хотим добавить следующие импортированные ресурсы в project-devops:
- Отчёты о соответствии требованиям с организацией Chef
devops - Узлы инфраструктуры с окружением
devи тегом Chefdevops-123 - Действия на серверах Chef Infra
devops.pizzaилиdevops.dog
Вы можете проверить, что эти фильтры работают как ожидается на страницах Поток событий, Запуск клиентов и Отчёты.
Перейдите на страницу сведений о проекте project-devops, выбрав имя проекта на странице списка проектов.
Нажмите кнопку Create Rule для создания нового правила проекта. Выберите тип ресурса Node, а затем заполните поля первого условия. Не стесняйтесь создавать фиктивные данные импорта, соответствующие приведённому ниже примеру JSON, или придумайте условие, которое соответствует вашему набору данных.
Предупреждение
{
"id": "devops-rule",
"name": "devops rule",
"type": "NODE",
"project_id": "project-devops",
"conditions": [
{
"operator": "EQUALS",
"attribute": "CHEF_ORGANIZATION",
"values": [
"devops"
]
}
]
}
Сохраните правило. Если вам нужно изменить название или условия, выберите название правила проекта на странице сведений о проекте.
При наличии ожидающих изменений будет показана панель внизу каждой страницы. Нажатие кнопки Update Projects на этой панели применит эти изменения.
Обновление проекта запускает операцию, которая применяет все ожидающие изменения правил, а затем перемещает импортированные ресурсы в соответствующие проекты в соответствии с последними изменениями. Импортированный ресурс перемещается в проект, если он соответствует хотя бы одному из правил проекта. В этом примере, после успешного обновления, все импортированные ресурсы, чья организация Chef соответствует devops будут считаться частью проекта project-devops. Только эти ресурсы будут отображаться на панелях Automate, когда в глобальном фильтре проекта выбран проект project-devops.
Во время выполнения операции в нижней панели отображается процент выполнения. Вы можете отменить обновление в любое время, нажав кнопку Stop Project Update на панели и подтвердив отмену в появившемся модальном окне.
Предупреждение
После успешного применения правил панель будет скрыта до следующего появления ожидающих изменений в любом проекте.
Чтобы проверить, что импортированные ресурсы были перемещены в правильные проекты, выберите project-devops в глобальном фильтре проектов, который находится в верхней части навигации. Данные в Automate отфильтровываются по выбранному проекту project-devops. В этом примере эффект проявляется при переходе на вкладку узлов отчётов о соответствии требованиям, которая содержит только узлы, принадлежащие организации Chef devops.
Теперь, когда у нас есть первая часть импортированных данных, связанных с нашим новым проектом, давайте добавим ещё одно условие и новое правило для добавления большего объёма данных в project-devops.
Примечание
Примечание
Event. Условие типа Node не будет соответствовать событию, даже если оператор, атрибут и значение условия полностью совпадают (и наоборот с правилами проекта Event и узлами). Вернитесь на страницу сведений о проекте и создайте два новых правила импорта, нажав на Create Rule. Создание новых правил расширит набор данных под project-devops, поскольку импортированному ресурсу достаточно соответствовать одному правилу, чтобы быть размещённым в проекте.
Первое правило должно содержать два условия. Заполните первое условие атрибутом Environment, оператором equals, и значением dev, или любым значением, соответствующим вашему набору данных. Нажмите Add Condition для добавления ещё одного условия с атрибутом Chef Tag, оператором equals, и devops-123. Сохраните правило.
Примечание
Для второго правила выберите тип ресурса Event. Заполните первое условие атрибутом Chef Server, оператором member of, и значением devops.pizza, devops.dog, или любыми значениями, соответствующими вашему набору данных.
Установка правила проекта Resource Type определяет доступные атрибуты условия. Условия правил типа Event могут иметь только атрибуты Chef Organization или Chef Server.
Правила типа Node могут иметь условия с атрибутами Chef Organization, Chef Server, Environment, Chef Role, Chef Tag, Chef Policy Name, Chef Policy Group.
Нажмите кнопку Update Projects в нижней панели. После завершения обновления вы должны сможете фильтровать по project-devops на всех панелях Automate и видеть только ожидаемые импортированные данные.
Проект Effortless Infra
Чтобы создать проект, содержащий все узлы Effortless Infra, создайте правило импорта с типом ресурса Node и условием, использующим атрибут Chef Server, оператор equals, и значение localhost.
Вышеуказанное правило соответствует полю сервера Chef Infra узла, которое установлено в localhost. Это правило работает, поскольку все узлы Effortless Infra содержат атрибут Chef Infra Server со значением localhost.
При необходимости создайте подгруппы узлов Effortless Infra, добавив второе условие, которое соответствует определённому Chef Policy Name.
Политики проекта
При создании проекта Chef Automate автоматически создаёт три дополнительных политики. В следующей таблице более подробно описаны роли, связанные с этими политиками.
| Название политики | Роль | Описание роли |
|---|---|---|
<project-name> Просмотрщики проекта | Просмотрщик | Просмотр всего в проекте кроме IAM |
<project-name> Редакторы проекта | Редактор | Выполнение всех действий в проекте кроме IAM |
<project-name> Владельцы проекта | Владелец проекта | Редактор + просмотр и назначение проектов |
Рассмотрим политику Просмотрщики проекта, которая использует роль Просмотрщик. Та же роль Просмотрщик также используется в стандартной политике Просмотрщик, которая позволяет пользователю просматривать всё в системе, кроме IAM. Использование роли Просмотрщик в политике Просмотрщики проекта ограничивает область действием вашего нового проекта, и пользователи, прикреплённые к политике Просмотрщики проекта, смогут просматривать объекты, связанные только с вашим проектом.
Предположим, вы назвали свой проект Devops, и у вас есть два пользователя: Терри и Келли. Если Терри нужно просмотреть Devops-скопированные ресурсы, добавьте Терри как участника в политику Devops Project Viewers. Если Келли нужно иметь возможность редактировать Devops-скопированные ресурсы, добавьте Келли в политику Devops Project Editor.
Когда Терри является участником политики Devops Project Viewers и не является участником других политик, они смогут видеть только ресурсы, назначенные Devops. Они не смогут обновлять или удалять их. Келли, однако, сможет обновлять и удалять.
См. Участие в политике для получения дополнительной информации об участии в политике.
Восстановление доступа администратора
Хотя у нас есть меры предосторожности, чтобы этого избежать, возможно, вы заблокируете себя от доступа к Chef Automate. Если у вас есть права root на узле, где установлен Chef Automate, используйте следующие команды для восстановления доступа администратора:
Эта команда сбрасывает пароль пользователя admin и гарантирует, что пользователь является членом локальной команды admins, которая является постоянным членом управляемой Chef политикой Administrator.
chef-automate iam admin-access restore <your new password here>
© 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/automate/iam_v2_guide/