Руководство пользователя IAM
Примечание
Это руководство покажет вам, как выполнять важные административные операции. Вы добавите членов в управляемые Chef политики v2, удалите устаревшую политику и напишите политику 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 и узлами инфраструктуры.
Проекты можно управлять через список проектов на вкладке Настройки и состоят из идентификатора, имени и набора правил импорта. Правила импорта проектов представляют собой списки условий, используемые только при назначении интегрированных ресурсов проектам, поэтому они не имеют отношения к назначению ресурсов 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. Вы должны создать проект, прежде чем сможете назначить ему какие-либо ресурсы.
При создании проекта система создаёт проект, а также три дополнительных политики для вашего удобства:
| Название политики | ID политики | Связанная роль |
|---|---|---|
<project-name> Владельцы проекта |
<project-name>-project-owners | Владелец проекта |
<project-name> Редакторы проекта |
<project-name>-project-editors | Редактор |
<project-name> Просмотрщики проекта |
<project-name>-project-viewers | Просмотрщик |
Эти политики обсуждаются более подробно в Политики проекта.
Назначение команд и токенов проектам
Проекты могут быть назначены созданным командам или токенам Automate при создании или обновлении.
Чтобы назначить команду проекту, выберите команду из списка Команды, затем выберите Детали. Аналогично, чтобы назначить токен проекту, выберите токен из списка токенов API, затем выберите Детали. В обоих случаях вы можете выбрать проекты из раскрывающегося списка проектов для назначения.
Вы также можете назначить команды и токены проектам при создании. В модальном окне создания выберите все проекты, к которым должен принадлежать новый ресурс.
Если вы хотите делегировать владение проектом другому пользователю, чтобы он мог назначать ресурсы, вы должны сделать этого пользователя Владельцем проекта этого проекта.
Назначение импортированных ресурсов проектам
В то время как локальные команды и токены Automate могут быть напрямую назначены проекту, импортированные ресурсы должны быть назначены проектам с помощью правил импорта.
Правила импорта проекта используются для связи импортированных ресурсов с проектами в Automate. Правило импорта содержит условия, определяющие, следует ли перемещать импортированный ресурс в проект правила. Каждое условие содержит атрибут, оператор и значение. См. IAM Project Rules API справку для получения подробной информации о том, как управлять правилами проекта.
В этом примере, после создания проекта с ID 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 Server узла, которое установлено в 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/