#c# #.net #azure #azure-active-directory #azure-keyvault
#c# #.net #azure #azure-active-directory #azure-keyvault
Вопрос:
Я работал с секретами, хранящимися в Azure Key Vault, но это первый раз, когда используется сертификат для аутентификации, а не секрет.
У меня есть сертификат, хранящийся в хранилище ключей Azure. Я хочу использовать этот сертификат для аутентификации в приложении Azure AD.
Я понимаю, что для секретов, хранящихся в хранилище ключей Azure, мы можем ссылаться на них в функции Azure через настройки приложений с помощью @Microsoft.KeyVault(SecretUri=’secretIdentifier’).
Я заметил, что существует три типа идентификаторов для сертификата: ключ, секрет и идентификатор сертификата. В чем разница между ними и какой цели служит каждый из них?
Кроме того, можем ли мы получить доступ к сертификату через секретный идентификатор, используя @Microsoft.KeyVault(SecretUri=’Секретный идентификатор сертификата’) и использовать if для аутентификации? Если мы можем, есть ли какие-либо оговорки к этому подходу?
Наконец, почему использование сертификата для аутентификации считается лучшим подходом, а не использованием секрета?
До сих пор мне не удалось найти объяснение, которое было бы легко понятно для человека, который раньше не использовал сертификаты. Любое предложение / объяснение будет высоко оценено.
Ответ №1:
О различиях между ключами, секретами и сертификатами см. Документацию Хранилища ключей Azure в разделе Типы объектов:
Думайте о секретах как о паролях и строках подключения. Ключи — это криптографические ключи, которые могут быть сгенерированы с использованием различных алгоритмов. А сертификаты — это ключи (или пары ключей) с дополнительными политиками, такими как автоматическая ротация.
Существует преимущество в проверке подлинности с использованием сертификата вместо секрета. Преимущество заключается в том, что сертификат имеет закрытый и открытый части ключа. Получатель вашего вызова API может подтвердить, кто вы, используя только общедоступную часть вашего сертификата, в то время как вы надежно защищаете закрытую часть в своем хранилище ключей. Секреты являются общими для вызывающей и вызываемой сторон и передаются по проводам, и, следовательно, существует больше возможностей для их утечки.
Ответ №2:
https://learn.microsoft.com/en-us/azure/key-vault/certificates/about-certificates упоминает , что
При создании сертификата хранилища ключей также создаются адресуемый ключ и секрет с тем же именем. Ключ хранилища ключей позволяет выполнять операции с ключами, а секрет хранилища ключей позволяет извлекать значение сертификата как секретное. Сертификат хранилища ключей также содержит общедоступные метаданные сертификата x509.
и
При создании сертификата хранилища ключей его можно извлечь из адресуемого секрета с помощью закрытого ключа в формате PFX или PEM.
Таким образом, «Секретный идентификатор сертификата» предоставляет инструментам возможность получить доступ к «фактическим байтам» сертификата вместе с его закрытым ключом. В качестве примера, это секретный идентификатор сертификата, который может быть предоставлен прослушивателю HTTPS шлюза приложений, чтобы этот сертификат использовался в качестве сертификата HTTPS.