Руководство пользователя IAM
Примечание
В данном руководстве показано, как выполнять важные административные операции. Вы добавите членов к управляемым Chef политикам v2, удалите устаревшую политику и создадите политику администратора команды 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.
"name": "Team Devops Managers",
Поле name предназначено для удобства чтения человеком. Когда вы хотите обратиться к политике в командах, вам понадобится знать ID политики. Давайте зададим этой политике значение ID: team-managers-devops.
"id": "team-managers-devops",
Кроме того, мы можем наделить разрешениями действия на этой политике, как и на любом другом ресурсе IAM, назначив ее одному или нескольким проектам. Если мы оставим массив projects пустым, то укажем, что политика не назначена. Например, любой, кто имеет разрешение на просмотр не назначенных политик, может просмотреть эту политику.
"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 и узлы инфраструктуры.
Проекты можно управлять через список Проекты во вкладке Настройки и состоят из 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 правил проекта IAM.
В этом примере, после создания проекта с идентификатором 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, и у вас есть два пользователя: Terry и Kelly. Если Terry нужно просматривать ресурсы, охватываемые Devops, добавьте Terry в качестве члена в политику Devops Просмотрщики проектов. Если Kelly нужно редактировать ресурсы, охватываемые Devops, добавьте Kelly в политику Devops Редакторы проектов.
Когда Терри является членом политики 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/