Безопасный доступ к хранилищу ключейSecure access to a key vault

Azure Key Vault — это облачная служба, которая обеспечивает защиту ключей шифрования и секретов (например, сертификатов, строк подключения и паролей).Azure Key Vault is a cloud service that safeguards encryption keys and secrets like certificates, connection strings, and passwords. Так как это критически важные для бизнеса конфиденциальные данные, следует обеспечить защиту доступа к хранилищу ключей, чтобы доступ могли получить только авторизованные приложения и пользователи.Because this data is sensitive and business critical, you need to secure access to your key vaults by allowing only authorized applications and users. В этой статье содержится обзор модели доступа к Key Vault.This article provides an overview of the Key Vault access model. Здесь приводится описание процессов аутентификации и авторизации, а также содержатся сведения о том, как защитить доступ к вашему хранилищу ключей.It explains authentication and authorization, and describes how to secure access to your key vaults.

Примечание

Эта статья была изменена и теперь содержит сведения о новом модуле Az для Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Вы по-прежнему можете использовать модуль AzureRM, исправления ошибок для которого будут продолжать выпускаться как минимум до декабря 2020 г.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Дополнительные сведения о совместимости модуля Az с AzureRM см. в статье Introducing the new Azure PowerShell Az module (Знакомство с новым модулем Az для Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Инструкции по установке модуля Az см. в статье об установке Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Общие сведения о модели доступаAccess model overview

Доступ к хранилищу ключей осуществляется с помощью двух интерфейсов: плоскость управления и плоскость данных.Access to a key vault is controlled through two interfaces: the management plane and the data plane. Плоскость управления используется для управления Key Vault.The management plane is where you manage Key Vault itself. Операции в этой плоскости включают в себя создание и удаление хранилищ ключей, получение свойств Key Vault и обновление политик доступа.Operations in this plane include creating and deleting key vaults, retrieving Key Vault properties, and updating access policies. Плоскость данных предназначена для работы с данными, хранящимися в хранилище ключей.The data plane is where you work with the data stored in a key vault. Вы можете добавлять, удалять и изменять ключи, секреты и сертификаты.You can add, delete, and modify keys, secrets, and certificates.

Чтобы получить доступ к хранилищу ключей в любой плоскости, все вызывающие объекты (пользователи или приложения) должны иметь надлежащую аутентификацию и авторизацию.To access a key vault in either plane, all callers (users or applications) must have proper authentication and authorization. Аутентификация позволяет идентифицировать вызывающую сторону.Authentication establishes the identity of the caller. Авторизация определяет, какие операции может выполнять вызывающий объект.Authorization determines which operations the caller can execute.

Для аутентификации в обеих плоскостях используется Azure Active Directory (Azure AD).Both planes use Azure Active Directory (Azure AD) for authentication. Для авторизации в плоскости управления используется управление доступом на основе ролей (RBAC), а в плоскости данных — политика доступа к Key Vault.For authorization, the management plane uses role-based access control (RBAC) and the data plane uses a Key Vault access policy.

Проверка подлинности Active DirectoryActive Directory authentication

При создании хранилища ключей в подписке Azure оно автоматически связывается с арендатором Azure AD этой подписки.When you create a key vault in an Azure subscription, it's automatically associated with the Azure AD tenant of the subscription. Все вызывающие объекты в обеих плоскостях должны быть зарегистрированы в этом арендаторе, а также пройти аутентификацию, чтобы получить доступ к этому хранилищу ключей.All callers in both planes must register in this tenant and authenticate to access the key vault. В обоих случаях приложение может получить доступ к Key Vault двумя способами.In both cases, applications can access Key Vault in two ways:

  • Пользователь и доступ к приложениям. приложение обращается к Key Vault от имени пользователя, выполнившего вход.User plus application access: The application accesses Key Vault on behalf of a signed-in user. Такой доступ осуществляется с помощью Azure PowerShell и портала Azure.Examples of this type of access include Azure PowerShell and the Azure portal. Есть два способа предоставления доступа пользователям.User access is granted in two ways. Пользователи могут получить доступ к Key Vault из любого приложения или только при использовании конкретного приложения (называемого составным идентификатором).Users can access Key Vault from any application, or they must use a specific application (referred to as compound identity).
  • Доступ только для приложений. приложение запускается как служба управляющей программы или фоновое задание.Application-only access: The application runs as a daemon service or background job. Доступ к хранилищу ключей предоставляется по удостоверению приложения.The application identity is granted access to the key vault.

При доступе обоих типов приложения проходят аутентификацию в Azure AD.For both types of access, the application authenticates with Azure AD. Приложения используют любой из поддерживаемых методов аутентификации в зависимости от своего типа.The application uses any supported authentication method based on the application type. Приложение получает маркер для ресурса в плоскости, в которой нужно предоставить доступ.The application acquires a token for a resource in the plane to grant access. Ресурс является конечной точкой в плоскости управления или данных на основе среды Azure.The resource is an endpoint in the management or data plane, based on the Azure environment. Приложение отправляет запрос REST API в Key Vault с использованием этого маркера.The application uses the token and sends a REST API request to Key Vault. Узнайте больше о полном потоке аутентификации.To learn more, review the whole authentication flow.

Модель единого механизма для аутентификации в обеих плоскостях имеет некоторые преимущества:The model of a single mechanism for authentication to both planes has several benefits:

  • организации могут централизованно управлять доступом ко всем принадлежащим им хранилищам ключей;Organizations can control access centrally to all key vaults in their organization.
  • когда пользователь покидает организацию, он мгновенно теряет доступ ко всем этим хранилищам ключей;If a user leaves, they instantly lose access to all key vaults in the organization.
  • организации могут настроить аутентификацию с помощью параметров в Azure AD (например, включение многофакторной проверки подлинности для повышения безопасности).Organizations can customize authentication by using the options in Azure AD, such as to enable multi-factor authentication for added security.

Конечные точки ресурсовResource endpoints

Приложения получают доступ к плоскостям через конечные точки.Applications access the planes through endpoints. Элементы управления доступом для двух плоскостей работают независимо.The access controls for the two planes work independently. Чтобы предоставить приложению доступ к использованию ключей в хранилище ключей, необходимо предоставить доступ к плоскости данных с помощью политики доступа к Key Vault.To grant an application access to use keys in a key vault, you grant data plane access by using a Key Vault access policy. Чтобы предоставить пользователю доступ на чтение к свойствам и тегам Key Vault, но не доступ к данным (ключам, секретам или сертификатам), необходимо предоставить доступ к плоскости управления с помощью RBAC.To grant a user read access to Key Vault properties and tags, but not access to data (keys, secrets, or certificates), you grant management plane access with RBAC.

В следующей таблице показаны конечные точки плоскости управления и плоскости данных.The following table shows the endpoints for the management and data planes.

Плоскость доступаAccess plane Конечные точки доступаAccess endpoints OperationsOperations Механизм управление доступомAccess control mechanism
Плоскость управленияManagement plane Глобально:Global:
management.azure.com:443management.azure.com:443

Azure China 21Vianet:Azure China 21Vianet:
management.chinacloudapi.cn:443management.chinacloudapi.cn:443

Azure для правительства США:Azure US Government:
management.usgovcloudapi.net:443management.usgovcloudapi.net:443

Azure для Германии:Azure Germany:
management.microsoftazure.de:443management.microsoftazure.de:443
Создание, чтение, изменение и удаление хранилищ ключейCreate, read, update, and delete key vaults

Настройка политик доступа Key VaultSet Key Vault access policies

Настройка тегов Key VaultSet Key Vault tags
RBAC Azure Resource ManagerAzure Resource Manager RBAC
Плоскость данныхData plane Глобально:Global:
<vault-name>.vault.azure.net:443<vault-name>.vault.azure.net:443

Azure China 21Vianet:Azure China 21Vianet:
<vault-name>.vault.azure.cn:443<vault-name>.vault.azure.cn:443

Azure для правительства США:Azure US Government:
<vault-name>.vault.usgovcloudapi.net:443<vault-name>.vault.usgovcloudapi.net:443

Azure для Германии:Azure Germany:
<vault-name>.vault.microsoftazure.de:443<vault-name>.vault.microsoftazure.de:443
Для ключей: расшифровка, шифрование,Keys: decrypt, encrypt,
распаковка, упаковка, проверка, подписывание,unwrap, wrap, verify, sign,
получение, перечисление, обновление, создание,get, list, update, create,
импорт, удаление, резервное копирование, восстановлениеimport, delete, backup, restore

Для секретов: получение, перечисление, настройка, удалениеSecrets: get, list, set, delete
Политика доступа к Key VaultKey Vault access policy

Плоскость управления и RBACManagement plane and RBAC

В плоскости управления для авторизации операций, которые может выполнять вызывающий объект, используется RBAC (Управление доступом на основе ролей).In the management plane, you use RBAC(Role Based Access Control) to authorize the operations a caller can execute. В модели RBAC каждая подписка Azure содержит экземпляр Azure AD.In the RBAC model, each Azure subscription has an instance of Azure AD. Вы можете предоставить доступ пользователям, группам и приложениям из этого каталога.You grant access to users, groups, and applications from this directory. Доступ предоставляется для управления ресурсами в подписке Azure, использующими модель развертывания Azure Resource Manager.Access is granted to manage resources in the Azure subscription that use the Azure Resource Manager deployment model. Чтобы предоставить доступ, можно использовать портал Azure, Azure CLI, Azure PowerShell или REST API Azure Resource Manager.To grant access, use the Azure portal, the Azure CLI, Azure PowerShell, or the Azure Resource Manager REST APIs.

Вы можете создать хранилище ключей в группе ресурсов и управлять доступом с помощью Azure AD.You create a key vault in a resource group and manage access by using Azure AD. Можно предоставить пользователям или группе возможность управлять хранилищами ключей в группе ресурсов.You grant users or groups the ability to manage the key vaults in a resource group. Вы можете предоставить доступ в определенной области путем назначения соответствующей роли RBAC.You grant the access at a specific scope level by assigning appropriate RBAC roles. Чтобы предоставить пользователю доступ к управлению хранилищами ключей, ему необходимо назначить предопределенную роль key vault Contributor в определенной области.To grant access to a user to manage key vaults, you assign a predefined key vault Contributor role to the user at a specific scope. Роли RBAC можно назначить следующие области:The following scopes levels can be assigned to an RBAC role:

  • Подписка. Роль RBAC, назначенная на уровне подписки, применяется ко всем группам ресурсов и ресурсам в рамках этой подписки.Subscription: An RBAC role assigned at the subscription level applies to all resource groups and resources within that subscription.
  • Группа ресурсов. Роль RBAC, назначенная на уровне группы ресурсов, применяется ко всем ресурсам в этой группе ресурсов.Resource group: An RBAC role assigned at the resource group level applies to all resources in that resource group.
  • Конкретный ресурс. Роль RBAC, назначенная для определенного ресурса, применяется к этому ресурсу.Specific resource: An RBAC role assigned for a specific resource applies to that resource. В этом случае ресурс является определенным хранилищем ключей.In this case, the resource is a specific key vault.

Есть несколько заданных по умолчанию ролей.There are several predefined roles. Если заданные роли не соответствуют вашим потребностям, вы можете определить собственные.If a predefined role doesn't fit your needs, you can define your own role. Дополнительные сведения см. в разделе RBAC: встроенные роли.For more information, see RBAC: Built-in roles.

Важно!

Если у пользователя есть разрешения Contributor в плоскости управления хранилища ключей, он может предоставить себе доступ к плоскости данных, настроив политику доступа к хранилищу ключей.If a user has Contributor permissions to a key vault management plane, the user can grant themselves access to the data plane by setting a Key Vault access policy. Следует очень внимательно контролировать, у кого есть доступ Contributor к вашим хранилищам ключей в рамках роли.You should tightly control who has Contributor role access to your key vaults. Убедитесь, что только авторизованные лица могут получать доступ к хранилищам ключей, ключам, секретам и сертификатам, а также управлять ими.Ensure that only authorized persons can access and manage your key vaults, keys, secrets, and certificates.

Плоскость данных и политики доступаData plane and access policies

Доступ к плоскости данных предоставляется путем настройки политик доступа Key Vault для хранилища ключей.You grant data plane access by setting Key Vault access policies for a key vault. Чтобы задать эти политики доступа, пользователь, группа или приложение должны иметь разрешения Contributor для плоскости управления этого хранилища ключей.To set these access policies, a user, group, or application must have Contributor permissions for the management plane for that key vault.

Пользователю, группе или приложению можно предоставить доступ на выполнение определенных операций с ключами или секретами в хранилище ключей.You grant a user, group, or application access to execute specific operations for keys or secrets in a key vault. Хранилище ключей в Key Vault поддерживает до 1024 записей политики доступа.Key Vault supports up to 1,024 access policy entries for a key vault. Чтобы предоставить нескольким пользователям доступ к плоскости данных, создайте группу безопасности Azure AD и добавьте в нее пользователей.To grant data plane access to several users, create an Azure AD security group and add users to that group.

Политики доступа к Key Vault предоставляют доступ отдельно к ключам, секретам и сертификатам.Key Vault access policies grant permissions separately to keys, secrets, and certificate. Можно предоставить пользователю доступ только к ключам, но не к секретам.You can grant a user access only to keys and not to secrets. Разрешения на доступ к ключам, секретам и сертификатам устанавливаются на уровне хранилища.Access permissions for keys, secrets, and certificates are at the vault level. Политика доступа к Key Vault не поддерживает детализированные разрешения на уровне объектов, таких как определенный ключ, секрет или сертификат.Key Vault access policies don't support granular, object-level permissions like a specific key, secret, or certificate. Чтобы задать политики доступа для хранилища ключей, можно использовать портал Azure, Azure CLI, Azure PowerShell или REST API управления Key Vault.To set access policies for a key vault, use the Azure portal, the Azure CLI, Azure PowerShell, or the Key Vault Management REST APIs.

Важно!

Политики доступа к Key Vault применяются на уровне хранилища.Key Vault access policies apply at the vault level. Если пользователю предоставлено разрешение на создание и удаление ключей, он может выполнять эти операции со всеми ключами в этом хранилище ключей.When a user is granted permission to create and delete keys, they can perform those operations on all keys in that key vault.

Можно ограничить доступ к плоскости данных с помощью конечных точек служб для виртуальной сети для Azure Key Vault.You can restrict data plane access by using virtual network service endpoints for Azure Key Vault. Вы можете настроить брандмауэры и правила виртуальной сети в качестве дополнительного уровня безопасности.You can configure firewalls and virtual network rules for an additional layer of security.

ПримерExample

В этом примере мы разрабатываем приложение, которое использует сертификат для TLS/SSL, службу хранилища Azure для хранения данных и ключ RSA 2 048-bit для операций подписывания.In this example, we're developing an application that uses a certificate for TLS/SSL, Azure Storage to store data, and an RSA 2,048-bit key for sign operations. Это приложение выполняется на виртуальной машине Azure (или в масштабируемом наборе виртуальных машин).Our application runs in an Azure virtual machine (VM) (or a virtual machine scale set). Мы можем использовать хранилище ключей, чтобы хранить секреты приложения.We can use a key vault to store the application secrets. Мы можем сохранить сертификат начальной загрузки, используемый приложением для аутентификации в Azure AD.We can store the bootstrap certificate that's used by the application to authenticate with Azure AD.

Нам нужен доступ к следующим сохраненным ключам и секретам:We need access to the following stored keys and secrets:

  • TLS/SSL-сертификат: используется для TLS/SSL.TLS/SSL certificate: Used for TLS/SSL.
  • Ключ хранилища: используется для доступа к учетной записи хранения.Storage key: Used to access the Storage account.
  • RSA 2 048-разрядный ключ: используется для операций подписывания.RSA 2,048-bit key: Used for sign operations.
  • Сертификат начальной загрузки: используется для проверки подлинности в Azure AD.Bootstrap certificate: Used to authenticate with Azure AD. После предоставления доступа можно получить ключ к хранилищу данных и использовать ключ RSA для подписывания.After access is granted, we can fetch the storage key and use the RSA key for signing.

Нам необходимо определить следующие роли, чтобы указать, кто может развертывать и проверять наше приложение, а также управлять им.We need to define the following roles to specify who can manage, deploy, and audit our application:

  • Группа по обеспечению безопасности: ИТ-специалисты из офиса CSO (руководитель по безопасности) или аналогичные участники.Security team: IT staff from the office of the CSO (Chief Security Officer) or similar contributors. Служба безопасности несет ответственность за надлежащее хранение секретов.The security team is responsible for the proper safekeeping of secrets. Секреты могут включать сертификаты TLS/SSL, ключи RSA для подписывания, строки подключения и ключи учетной записи хранения.The secrets can include TLS/SSL certificates, RSA keys for signing, connection strings, and storage account keys.
  • Разработчики и операторы: сотрудники, которые разрабатывают приложение и развертывают его в Azure.Developers and operators: The staff who develop the application and deploy it in Azure. Участники этой команды не являются сотрудниками службы безопасности.The members of this team aren't part of the security staff. Они не должны иметь доступа к конфиденциальным данным, таким как сертификаты TLS/SSL и ключи RSA.They shouldn't have access to sensitive data like TLS/SSL certificates and RSA keys. Только развертываемое ими приложение должно иметь доступ к конфиденциальным данным.Only the application that they deploy should have access to sensitive data.
  • Аудиторы. Эта роль предназначена для участников, которые не являются участниками разработки или общими ИТ-специалистами.Auditors: This role is for contributors who aren't members of the development or general IT staff. Они проверяют надлежащее использование и обслуживание сертификатов, ключей и секретов, а также обеспечивают соответствие стандартам безопасности данных.They review the use and maintenance of certificates, keys, and secrets to ensure compliance with security standards.

Существует другая роль, которая выходит за рамки нашего приложения. Это администратор подписки (или группы ресурсов).There's another role that's outside the scope of our application: the subscription (or resource group) administrator. Администратор подписки устанавливает начальные права доступа для группы безопасности.The subscription admin sets up initial access permissions for the security team. Он предоставляет ей доступ с помощью группы ресурсов, которая содержит ресурсы, необходимые для этого приложения.They grant access to the security team by using a resource group that has the resources required by the application.

Нам необходимо авторизовать для наших ролей следующие операции.We need to authorize the following operations for our roles:

Группа безопасности:Security team

  • создание хранилищ ключей;Create key vaults.
  • включение ведения журнала Key Vault;Turn on Key Vault logging.
  • добавление ключей и секретов;Add keys and secrets.
  • создание резервной копии ключей для аварийного восстановления;Create backups of keys for disaster recovery.
  • установка политики доступа к Key Vault для предоставления пользователям и приложениям разрешений на выполнение определенных операций;Set Key Vault access policies to grant permissions to users and applications for specific operations.
  • периодическое развертывание ключей и секретов.Roll the keys and secrets periodically.

Разработчики и операторы:Developers and operators

  • Получите ссылки от группы безопасности для сертификатов начальной загрузки и TLS/SSL (отпечатков), ключа хранилища (URI секрета) и ключа RSA (URI ключа) для подписывания.Get references from the security team for the bootstrap and TLS/SSL certificates (thumbprints), storage key (secret URI), and RSA key (key URI) for signing.
  • разработка и развертывание приложения, которое получает доступ к ключам и секретам программным способом.Develop and deploy the application to access keys and secrets programmatically.

Аудиторы:Auditors

  • просмотр журналов Key Vault для подтверждения правильного применения ключей или секретов и соответствия стандартам безопасности данных.Review the Key Vault logs to confirm proper use of keys and secrets, and compliance with data security standards.

В следующей таблице приведены разрешения доступа для наших ролей и приложения.The following table summarizes the access permissions for our roles and application.

РольRole Разрешения плоскости управленияManagement plane permissions Разрешения плоскости данныхData plane permissions
Группа безопасностиSecurity team Участник Key VaultKey Vault Contributor Ключи: резервное копирование, создание, удаление, получение, импорт, перечисление, восстановлениеKeys: backup, create, delete, get, import, list, restore
Секреты: все операцииSecrets: all operations
Разработчики и операторыDevelopers and operators Разрешение на развертывание Key VaultKey Vault deploy permission

Примечание. это разрешение позволяет развернутым виртуальным машинам получать секреты из хранилища ключей.Note: This permission allows deployed VMs to fetch secrets from a key vault.
НетNone
АудиторыAuditors НетNone Ключи: перечислениеKeys: list
Секреты: перечислениеSecrets: list

Примечание. это разрешение позволяет аудиторам проверять атрибуты (Теги, даты активации, сроки действия) для ключей и секретов, не выдаваемых в журналах.Note: This permission enables auditors to inspect attributes (tags, activation dates, expiration dates) for keys and secrets not emitted in the logs.
ПриложениеApplication НетNone Ключи: подписываниеKeys: sign
Секреты: получениеSecrets: get

Трем ролям группы требуется доступ к другим ресурсам вместе с разрешениями Key Vault.The three team roles need access to other resources along with Key Vault permissions. Чтобы иметь возможность развернуть виртуальные машины (или компонент "Веб-приложения" Службы приложений Azure), разработчикам и операторам необходим доступ Contributor к таким типам ресурсов.To deploy VMs (or the Web Apps feature of Azure App Service), developers and operators need Contributor access to those resource types. Аудиторам требуется доступ на чтение к учетной записи хранения, где хранятся журналы Key Vault.Auditors need read access to the Storage account where the Key Vault logs are stored.

Дополнительные сведения о программном развертывании сертификатов, ключей доступа и секретов см. в следующих ресурсах:For more information about how to deploy certificates, access keys, and secrets programmatically, see these resources:

Большую часть разрешений на доступ можно предоставить с помощью портала Azure.You can grant most of the access permissions by using the Azure portal. Чтобы предоставить подробные разрешения, можно использовать Azure PowerShell или Azure CLI.To grant granular permissions, you can use Azure PowerShell or the Azure CLI.

Фрагменты кода PowerShell в этом разделе написаны исходя из следующих предположений.The PowerShell snippets in this section are built with the following assumptions:

  • Администратор Azure AD создал группы безопасности для представления трех ролей: группа безопасности Contoso, DevOps приложений Contoso и аудиторы приложений contoso.The Azure AD administrator has created security groups to represent the three roles: Contoso Security Team, Contoso App DevOps, and Contoso App Auditors. Администратор также добавил пользователей в группы, к которым они относятся.The admin has added users to their respective groups.
  • Все ресурсы находятся в группе ресурсов ContosoAppRG.All resources are located in the ContosoAppRG resource group.
  • Журналы Key Vault хранятся в учетной записи хранения contosologstorage.The Key Vault logs are stored in the contosologstorage storage account.
  • Хранилище ключей ContosoKeyVault и учетная запись хранения contosologstorage находятся в одном расположении Azure.The ContosoKeyVault key vault and the contosologstorage storage account are in the same Azure location.

Администратор подписки назначает роли key vault Contributor и User Access Administrator группе безопасности.The subscription admin assigns the key vault Contributor and User Access Administrator roles to the security team. Эти роли позволяют группе безопасности управлять доступом к другим ресурсам и хранилищам ключей, которые находятся в группе ресурсов ContosoAppRG.These roles allow the security team to manage access to other resources and key vaults, both of which in the ContosoAppRG resource group.

New-AzRoleAssignment -ObjectId (Get-AzADGroup -SearchString 'Contoso Security Team')[0].Id -RoleDefinitionName "key vault Contributor" -ResourceGroupName ContosoAppRG
New-AzRoleAssignment -ObjectId (Get-AzADGroup -SearchString 'Contoso Security Team')[0].Id -RoleDefinitionName "User Access Administrator" -ResourceGroupName ContosoAppRG

Команда безопасности создает хранилище ключей и настраивает ведение журнала и права доступа.The security team creates a key vault and sets up logging and access permissions. Ознакомиться со сведениями о разрешениях политики доступа Key Vault можно в статье Сведения о ключах, секретах и сертификатах.For details about Key Vault access policy permissions, see About Azure Key Vault keys, secrets, and certificates.

# Create a key vault and enable logging
$sa = Get-AzStorageAccount -ResourceGroup ContosoAppRG -Name contosologstorage
$kv = New-AzKeyVault -Name ContosoKeyVault -ResourceGroup ContosoAppRG -SKU premium -Location 'westus' -EnabledForDeployment
Set-AzDiagnosticSetting -ResourceId $kv.ResourceId -StorageAccountId $sa.Id -Enabled $true -Category AuditEvent

# Set up data plane permissions for the Contoso Security Team role
Set-AzKeyVaultAccessPolicy -VaultName ContosoKeyVault -ObjectId (Get-AzADGroup -SearchString 'Contoso Security Team')[0].Id -PermissionsToKeys backup,create,delete,get,import,list,restore -PermissionsToSecrets get,list,set,delete,backup,restore,recover,purge

# Set up management plane permissions for the Contoso App DevOps role
# Create the new role from an existing role
$devopsrole = Get-AzRoleDefinition -Name "Virtual Machine Contributor"
$devopsrole.Id = $null
$devopsrole.Name = "Contoso App DevOps"
$devopsrole.Description = "Can deploy VMs that need secrets from a key vault"
$devopsrole.AssignableScopes = @("/subscriptions/<SUBSCRIPTION-GUID>")

# Add permissions for the Contoso App DevOps role so members can deploy VMs with secrets deployed from key vaults
$devopsrole.Actions.Add("Microsoft.KeyVault/vaults/deploy/action")
New-AzRoleDefinition -Role $devopsrole

# Assign the new role to the Contoso App DevOps security group
New-AzRoleAssignment -ObjectId (Get-AzADGroup -SearchString 'Contoso App Devops')[0].Id -RoleDefinitionName "Contoso App Devops" -ResourceGroupName ContosoAppRG

# Set up data plane permissions for the Contoso App Auditors role
Set-AzKeyVaultAccessPolicy -VaultName ContosoKeyVault -ObjectId (Get-AzADGroup -SearchString 'Contoso App Auditors')[0].Id -PermissionsToKeys list -PermissionsToSecrets list

Определенную пользовательскую роль можно назначить только подписке, где создана группа ресурсов ContosoAppRG.Our defined custom roles are assignable only to the subscription where the ContosoAppRG resource group is created. Чтобы использовать пользовательскую роль для других проектов в других подписках, добавьте другие подписки в область роли.To use a custom role for other projects in other subscriptions, add other subscriptions to the scope for the role.

Для наших сотрудников DevOps назначение пользовательских ролей для разрешения deploy/action хранилища ключей ограничивается группой ресурсов.For our DevOps staff, the custom role assignment for the key vault deploy/action permission is scoped to the resource group. Доступ к секретам разрешен только виртуальным машинам, созданным в группе ресурсов ContosoAppRG (TLS/SSL и сертификаты начальной загрузки).Only VMs created in the ContosoAppRG resource group are allowed access to the secrets (TLS/SSL and bootstrap certificates). Виртуальные машины, созданные в других группах ресурсов участником DevOps, не могут получить доступ к этим секретам, даже если у виртуальной машины есть URI секретов.VMs created in other resource groups by a DevOps member can't access these secrets, even if the VM has the secret URIs.

В этом примере показан простой сценарий.Our example describes a simple scenario. Реальные сценарии могут быть более сложными.Real-life scenarios can be more complex. Вы можете настроить разрешения для хранилища ключей в соответствии со своими потребностями.You can adjust permissions to your key vault based on your needs. Предположим, что группа безопасности предоставляет ссылки на ключ и секрет (URI и отпечатки), которые команда DevOps использует в своих приложениях.We assumed the security team provides the key and secret references (URIs and thumbprints), which are used by the DevOps staff in their applications. Разработчикам и операторам не требуется доступ к плоскости данных.Developers and operators don't require any data plane access. Эта статья была посвящена вопросам, связанным с безопасностью хранилища ключей.We focused on how to secure your key vault. Похожие рекомендации следует также учитывать при обеспечении защиты виртуальных машин, учетных записей хранения и других ресурсов Azure.Give similar consideration when you secure your VMs, storage accounts, and other Azure resources.

Примечание

В этом примере показано, как доступ к Key Vault будет заблокирован в рабочей среде.This example shows how Key Vault access is locked down in production. У разработчиков должна быть своя подписка или группа ресурсов с полным набором разрешений на управление своими хранилищами, виртуальными машинами, а также учетная запись хранения, в которой они разрабатывают приложения.Developers should have their own subscription or resource group with full permissions to manage their vaults, VMs, and the storage account where they develop the application.

Рекомендуем настроить брандмауэры и виртуальные сети Key Vault, чтобы дополнительно обеспечить безопасный доступ к хранилищу ключей.We recommend that you set up additional secure access to your key vault by configuring Key Vault firewalls and virtual networks.

РесурсыResources

Дальнейшие действияNext steps

Настройка брандмауэров и виртуальных сетей Azure Key VaultConfigure Key Vault firewalls and virtual networks.

Руководство по началу работы для администраторов см. в статье Что такое Azure Key Vault?For a getting-started tutorial for an administrator, see What is Azure Key Vault?.

Дополнительные сведения о ведении журнала использования для хранилища ключей см. в статье Ведение журнала Azure Key Vault.For more information about usage logging for Key Vault, see Azure Key Vault logging.

Дополнительные сведения об использовании ключей и секретов с помощью Azure Key Vault см. в этой статье.For more information about using keys and secrets with Azure Key Vault, see About keys and secrets.

Если у вас возникли вопросы о Key Vault, посетите форумы.If you have questions about Key Vault, visit the forums.