В когда-нибудь есть автоматический процесс, просто внезапно перестал работать, даже если вы не внесли изменения в процесс? Нет ничего подобного чистому адреналину отладки, почему никто не комбинирует, не развернут до производства для критического исправления, и все же все, что сообщает «зеленый». Конечно, были небольшие вещи, которые могут быть исправлены, но эти вещи были просто отвлечениями в этот момент. У каждого было мнение о том, что происходит и просто хотел, чтобы это исправлено сейчас! Пока у меня был самый старшин в рамках операционной команды, некоторые выразили, что это отсутствие моего опыта, вызывающего проблему. Это дало мне подсказку к поиску проблемы. Что-то изменилось. Инженер, который настроил CD-трубопровод, недавно оставил. Немного окуни, и я понял, что он использовал свои полномочия, чтобы получить автоматическое развертывание для работы … Поэтому, когда он ушел, его полномочия были отключены, и она просто не удалась.
У вас нет лазу Возьмите бесплатную подписку Отказ
При написании сценариев для автоматизации или построения сервиса не работайте в своих собственных учетных данных. Это создает одну точку отказа на вас для службы. Это также хорошая практика, чтобы отделить беспокойство между средами. Таким образом, даже если кто-то случайно управляет командой теста против производства, у него не будет катастрофических результатов.
Один рекомендуемый подход — использовать Принципы услуг Отказ Директор службы Azure — это личность для использования с приложениями, услугами и инструментами для доступа к ресурсам Azure. Использование принципов услуг позволяет нам назначать конкретные разрешения, которые ограничены в области применения, чтобы точно, что требуется, поэтому мы можем минимизировать влияние, если он скомпрометирован!
Мы можем назначить разные Встроенные роли к руководителю услуг, а также создавать пользовательские роли, если встроенные не были достаточными. Нет никаких отношений с одним к одному с ролями и принципалами услуг. Принципы услуг могут иметь несколько ролей.
После вы Установил Azure CLI или скачал Docker Image. , вы можете начать использовать CLI. Я управляю этими примерами в Докере. Если вы установили напрямую, вы можете игнорировать команду Docker.
$ docker run -it microsoft/azure-cli
Мы получаем AZ команда У кого много разных функций. Мы собираемся сосредоточиться на управлении руководителем услуг для этой статьи. Во-первых, нам нужно войти в систему.
bash-4.4# az login
Если CLI может добраться до веб-браузера, он откроет его и у вас будет войти. В противном случае URL предоставляется из командной строки для посещения вместе с кодом для входа в на страницу входа.
В зависимости от вашего использования Azure у вас может быть разные подписки. Перед запуском команд в CLI полезно проверить ваши подписки, используя Список аккаунтов AZ
. Я добавил -o Таблица
Чтобы упростить для меня, чтобы прочитать вывод по сравнению с выходом json по умолчанию. Вот модифицированная версия моего вывода, показывающая, что у меня есть 2 учетных записей, один, который является моей учетной записью Pay-You-Go, которую я обновил после истечения моим бесплатным аккаунтом Azure, и одна, которая является моей подпиской, связанной с работой.
bash-4.4# az account list -o table Name CloudName SubscriptionId State IsDefault ----------------------------- ----------- ------------------------------------ ------- ----------- my-pay-as-you-go AzureCloud 00000000-0000-0000-0000-100000000000 Enabled False Visual Studio Enterprise AzureCloud 00000000-0000-0000-0000-100000000001 Enabled True
Я хочу убедиться, что я использую свое «Предприятие Visual Studio» для этой прогулки Поэтому я собираюсь явно установить свою подписку.
bash-4.4# az account set --subscription="00000000-0000-0000-0000-100000000001"
Далее я хочу управлять руководителем службы. Я могу получить больше информации о команде Azure CLI, прежде чем запустить его, добавив -h флаг.
bash-4.4# az ad sp -h Group az ad sp : Manage Azure Active Directory service principals for automation authentication. Subgroups: credential : Manage a service principals credentials. owner : Manage service principal owners. Commands: create : Create a service principal. create-for-rbac : Create a service principal and configure its access to Azure resources. delete : Delete a service principal and its role assignments. list : List service principals. show : Get the details of a service principal.
Разбие это в его компоненты, я использую AZ
CLI, с Ad
Вариант для Active Directory и СП
Предпоточный для руководителя обслуживания.
Я собираюсь использовать create-for-rbac
Вариант с главным именем SigjeserviceMoPrincipal и Grant Читатель роль принципала. Если роль не указана в времени создания, роль по умолчанию Участник назначен директору. Читатель Роль позволяет основным представить все ресурсы, но не вносить изменения. Участник Роль позволяет вам управлять всем, кроме изменяющегося доступа к ресурсам. Ролевые задания могут получить довольно сложный.
bash-4.4# az ad sp create-for-rbac --name SigjeServiceDemoPrincipal --role Reader Changing "SigjeServiceDemoPrincipal" to a valid URI of "http://SigjeServiceDemoPrincipal", which is the required format used for service principal names { "appId": "00000000-1111-0000-0000-000000000000", "displayName": "SigjeServiceDemoPrincipal", "name": "http://SigjeServiceDemoPrincipal", "password": "My Sekret Password", "tenant": "11111111-0000-0000-0000-000000000000" }
Не указав что-либо дополнительное, Azure будет генерировать и предоставлять случайный пароль для моего нового руководителя услуг.
Мы можем взять APPID и использовать его для изучения нашего только что созданного руководителя услуг с Список назначения роли AZ --assignee --id "00000000-1111-0000-0000-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Что ответит на объект JSON, который содержит информацию о нашем руководителе обслуживания.
[ { "canDelegate": null, "id": "/subscriptions/00000000-0000-0000-0000-100000000001/providers/Microsoft.Authorization/roleAssignments/b681786a", "name": "b681786a", "principalId": "00000000-1111-0000-0000-000000000000", "principalName": "http://SigjeServiceDemoPrincipal", "roleDefinitionId": "/subscriptions/00000000-0000-0000-0000-100000000001/providers/Microsoft.Authorization/roleDefinitions/acdd72a7", "roleDefinitionName": "Reader", "scope": "/subscriptions/00000000-0000-0000-0000-100000000001", "type": "Microsoft.Authorization/roleAssignments" } ]
Область применения этой роли для всей подписки "Объем": "/Подписки/00000000-0000-0000-0000-100000000001"
Отказ Область применения — это уровень, к которому применяется назначение ролей. В этом случае это каждый ресурс в подписке.
На этой диаграмме сверху вниз у нас есть больше всего доступа к ресурсам.
Наконец, я убираю директора службы, потому что я не хочу просто оставить этот сервис принципиально сидеть в моей подписке с az ad sp delete --id "00000000-11111-0000-0000-0000000000000000-000000000000"
который ответит на Удаление ролей назначения .
Что дальше
В идеале я бы не создал бы директор услуг для автоматизации для аутентификации с паролем, который я бы тогда встроен. Вместо этого мы можем сделать аутентификацию на основе сертификатов и даже хранить сертификат в хранилище Key Azure. Мы также можем указать объем нашего сервиса под руководством для создания, а не модифицировать его после этого, поэтому мы можем ограничить принципалы услуг, чтобы иметь доступ к конкретным ресурсам.
Поделитесь своими несчастью с личными полномочиями или любыми вопросами, которые у вас есть ниже!
Ресурсы:
- Возьмите бесплатную подписку
- Установите Azure CLI
- Беги из контейнера докера
- Azure-Cli DockerFile
- Azure CLI Deepdive
- Создайте основной сервис, используя CLI
- Встроенные роли для Azure Resources
Оригинал: «https://dev.to/azure/you-gotta-keep-privileges-separated-509»