Я настроил Федерацию идентификации рабочей нагрузки. В основном вот так:
var applicationRegistrationDisplayName = 'GitHub Actions Application Deployer.'
var githubOIDCProvider = 'https://token.actions.githubusercontent.com'
var microsoftEntraAudience = 'api://AzureADTokenExchange'
var applicationRegistrationName = 'app-deployer'
resource GithubActionsApplication 'Microsoft.Graph/[email protected]' = {
uniqueName: applicationRegistrationName
displayName: applicationRegistrationDisplayName
resource githubFederatedIdentityCredential '[email protected]' = {
name: '${GithubActionsApplication.uniqueName}/githubFederatedIdentityCredential'
audiences: [microsoftEntraAudience]
description: 'Identity for application to deploy the root infrastructure.'
issuer: githubOIDCProvider
subject: GitHubActionsFederatedIdentitySubject
}
}
resource githubActionsServicePrincipal 'Microsoft.Graph/[email protected]' = {
displayName: applicationRegistrationDisplayName
appId: GithubActionsApplication.appId
}
Затем я добавил Федеративные учетные данные управляемых удостоверений из GitHub должны быть получены от доверенных владельцев репозитория. Определение встроенной политики Azure, поскольку я думал, что мне следует ограничить разрешенные репозитории для любых возможных федеративных удостоверений, пытающихся подключиться.
Однако теперь я не уверен, что следует помещать в массив allowedRepoOwners
. Итак, у меня в голове возникают вопросы:
https://github.com/<organizationX>
, стоит ли мне добавить туда https://github.com/<organizationX>
или, может быть, organizationX
?https://github.com/<organizationX>/<RepoA>
, https://github.com/<organizationX>/<RepoB>
?Мне пришло в голову просто попробовать, но я также думаю, как читать подобные определения, чтобы получить подобную информацию. Кроме того, возможно, есть возможность немного улучшить документацию, но я не знаю, где это сделать.
Кажется, это действительно работает, @VenkatV. Хотите превратить свой комментарий в ответ, чтобы я мог его принять? :)
Что следует указать для «repoOwners» в политике федеративных учетных данных управляемой идентификации?
Массив allowedRepoOwners
в Managed Identity Federated Credentials policy
, который содержит имена пользователей GitHub или организации, которым доверяют федеративные учетные данные.
Чтобы ограничить федерацию репозиториями, принадлежащими организации, вы можете добавить OrganizationX в массив разрешенныхRepoOwners.
Вот пример: github.com/organizationX
Чтобы ограничить все репозитории под этим владельцем, вы можете добавить организацию в allowedRepoOwners array
, этого достаточно, чтобы ограничить все репозитории.
Это будет применяться ко всем репозиториям, принадлежащим organizationX
и контролю доступа.
Массив разрешенныхRepoOwners в политике федеративных учетных данных управляемого удостоверения должен содержать имена пользователей GitHub или организации, которым доверяют федеративные учетные данные. Например, если вы хотите ограничить федерацию репозиториями, принадлежащими организации github.com/organizationX , вам следует добавить OrganizationX в массив разрешенныхRepoOwners. Добавление полного URL-адреса github.com/organizationX также должно работать. Добавления организации в массив разрешенныхRepoOwners должно быть достаточно, чтобы ограничить все репозитории под этим владельцем.