当前位置: 首页 > 知识库问答 >
问题:

谷歌云IAM工作负载身份与Azure广告'应用程序注册'/'企业应用程序'联合

郎吉星
2023-03-14

我正在尝试设置Azure广告“企业应用程序”,以便从myapps访问谷歌云。微软com的身份和访问权限。

我设置了工作负载身份联合,如https://cloud.google.com/iam/docs/configuring-workload-identity-federation#azure所述,但是身份验证工作不正常,出现以下错误。

gcloud auth login --cred-file="/Users/pavan-mac/Downloads/clientLibraryConfig-aad-oidc.json"       

ERROR: gcloud crashed (TransportError): HTTPConnectionPool(host='169.254.169.254', port=80): Max retries exceeded with url: /metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fiam.googleapis.com%2Fprojects%<removed>%2Flocations%2Fglobal%2FworkloadIdentityPools%2Faad-integration%2Fproviders%2Faad-oidc (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7feb69c80a10>: Failed to establish a new connection: [Errno 60] Operation timed out'))

我的命令:

➜ ~ gcloud iam workload-identity-pools create "azure-ad-integration" \ --location="global" \ --description="azure-ad-integration" \ --display-name="azure-ad-integration" 
Created workload identity pool [azure-ad-integration]. 
➜ ~ gcloud iam workload-identity-pools providers create-oidc azure-ad-oidc-provider\ --location="global" \ --workload-identity-pool="azure-ad-integration"\ --issuer-uri="sts.windows.net/<removed-tenant-id>" \ --allowed-audiences="api://<removed-app-id-uri>" \ --attribute-mapping="google.subject=assertion.sub,google.groups=assertion.groups" 
Created workload identity pool provider [azure-ad-oidc-provider].
➜ ~ gcloud iam service-accounts add-iam-policy-binding <removed-svc-account> \ --role roles/iam.workloadIdentityUser \ --member "principalSet://iam.googleapis.com/projects/<removed-project-number>/locations/global/workloadIdentityPools/azure-ad-integration/*" 
Updated IAM policy for serviceAccount [<service-acocunt>@<project>.iam.gserviceaccount.com]. bindings: 
 - members: 
  - principalSet://iam.googleapis.com/projects/<removed-project-number>/locations/global/workloadIdentityPools/azure-ad-integration/* role: roles/iam.workloadIdentityUser etag: BwXTqFEUIVo=
➜ ~ gcloud iam workload-identity-pools create-cred-config projects/<removed-project-num>/locations/global/workloadIdentityPools/azure-ad-integration/providers/azure-ad-oidc-provider\ --service-account='<service-account>@<project>.gserviceaccount.com'\ --azure \ --app-id-uri 'api://<app-id-uri>'\ --output-file=FILEPATH.json
 Created credential configuration file [FILEPATH.json].
➜  ~ gcloud version
Google Cloud SDK 367.0.0
bq 2.0.72
core 2021.12.10
gsutil 5.5
➜  ~ 

2个问题:

  1. 我怀疑问题在于属性映射。使用Azure AD OIDC提供程序时,指定属性的理想配置是什么

共有1个答案

宰父阳焱
2023-03-14

由于在Azure虚拟机外部使用CLI,因此无法访问Azure托管标识。这就是元数据服务器出错的原因169.254.169.254//metadata/identity/oauth2/token

工作负载标识联合的要求/选项之一是为运行Google Cloud CLI的资源创建或分配托管标识。

准备外部身份提供程序

若要让应用程序获取Azure AD应用程序的访问令牌,可以使用托管标识

在这个Google文档中,演示了一个技巧,它要求您自己从Azure实例元数据服务获取一个访问令牌,并将其粘贴到断言中。我没有尝试过这种技术,但这意味着每次令牌过期时,你都需要重复这个过程。

curl \
  "http://169.254.169.254/metadata/identity/oauth2/token?resource=APP_ID_URI&api-version=2018-02-01" \
  -H "Metadata: true" | jq -r .access_token

从Azure实例元数据服务(IMDS)获取访问令牌

 类似资料:
  • 作者:陈希章 发表于2017年3月22日 在此前的文章中,我给大家介绍了分别用Graph 浏览器以及第三方工具(POSTMAN)快速体验Microsoft Graph的功能,其中有一个重要的环节就是,开发人员需要访问Microsoft Graph的话,其实是事先需要注册一个应用程序的。Graph 浏览器是特例,因为这个应用程序是微软官方注册好的。而大家在POSTMAN这篇文章中已经看到我注册的自定

  • 作者:陈希章 发表于 2017年3月22日 上一篇 介绍了Microsoft Graph应用程序的一些概念,以及目前还比较普遍的Azure AD 1.0应用程序的注册方式。但正如我多次提到的那样,虽然目前功能还在不断完善,但Azure AD 2.0会逐渐成为主流,它有如下几个优势 Azure AD 2.0 应用程序,既支持访问工作或学校账号,也支持访问个人账号的资源。 注册Azure AD 2.0

  • 我的webapp是用。NET核心并部署在Azure中。我已启用Azure应用程序服务身份验证,并将其配置为使用Azure Active Directory。当我访问webapp时,我确实会被重定向到正确的登录页面。登录后,我可以浏览到endpoint。对我进行身份验证,并查看是否存在针对我的用户的声明。我还可以验证下面的请求标头是否存在值: X-MS-TOKEN-AAD-ID-TOKEN X-MS

  • 是否建议使用android云备份来备份GCM id?我将GCM id存储在SharedReferences中,因此我不必继续注册。 如果我备份此GCM sharedpref和用户更改设备,我是否需要将其更新为新的注册id?注册ID是否特定于设备?当用户更改设备并备份时会发生什么情况? 我试着从文档中读到: 您必须排除任何特定于设备的标识符,无论是由服务器发布的还是在设备上生成的。这包括谷歌云消息(

  • 在谷歌工作表上,尝试根据特定单元格中的值隐藏/取消隐藏行,并尝试在AppsScript中为此编写脚本。发现一个隔离工作(如果B55=NO,则隐藏64行): 但我需要对多个单元格和多行使用相同的方法,只要我展开它,就只有代码的最后一部分有效,而不是第一部分: 从这里开始,B121号牢房开始工作,但我的B55停止工作。有什么提示吗?谢谢!