[ https://issues.apache.org/jira/browse/HADOOP-18610?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17844883#comment-17844883 ]
ASF GitHub Bot commented on HADOOP-18610: ----------------------------------------- anujmodi2021 commented on code in PR #6787: URL: https://github.com/apache/hadoop/pull/6787#discussion_r1595039239 ########## hadoop-tools/hadoop-azure/src/site/markdown/testing_azure.md: ########## @@ -879,6 +879,42 @@ hierarchical namespace enabled, and set the following configuration settings: </property> --> + <!--2.5. If "WorkloadIdentityTokenProvider" is set as key provider, uncomment below and + set tenant, client id and token file path. + + All service principals must have federated identity credentials for Kubernetes. + See Azure docs: https://learn.microsoft.com/en-us/azure/active-directory/workload-identities/workload-identity-federation-create-trust?pivots=identity-wif-apps-methods-azp#kubernetes + + Retrieve the Azure identity token from kubernetes: + 1. Create AKS cluster with Workload Identity: https://learn.microsoft.com/en-us/azure/aks/workload-identity-deploy-cluster + 2. Create the pod: + kubectl apply -f src/test/resources/workload-identity-pod.yaml + 3. After the pod is running, retrieve the identity token from the pod logs: + kubectl logs pod/workload-identity + 4. Save the identity token to the token file path specified below. + + The Azure identity token expires after 1 hour. + --> + <!-- + <property> + <name>fs.azure.account.oauth2.msi.tenant.{ABFS_ACCOUNT_NAME}</name> + <value>{tenantGuid}</value> + <description>msi tenantGuid.</description> + </property> + + <property> + <name>fs.azure.account.oauth2.client.id.{ABFS_ACCOUNT_NAME}</name> + <value>{client id}</value> + <description>AAD client id.</description> + </property> + + <property> + <name>fs.azure.account.oauth2.client.token.file.{ABFS_ACCOUNT_NAME}</name> + <value>{token file path}</value> Review Comment: I looked through some online resources and found that clientAssertion has to be in the following format: ```"<Base64URL encoded JOSE Header>.<Base64URL encoded JWS Payload>.<Base64URL encoded JWS Signature>"``` Will add test cases around this. > ABFS OAuth2 Token Provider to support Azure Workload Identity for AKS > --------------------------------------------------------------------- > > Key: HADOOP-18610 > URL: https://issues.apache.org/jira/browse/HADOOP-18610 > Project: Hadoop Common > Issue Type: Improvement > Components: tools > Affects Versions: 3.3.4 > Reporter: Haifeng Chen > Assignee: Anuj Modi > Priority: Critical > Labels: pull-request-available > Attachments: HADOOP-18610-preview.patch > > Original Estimate: 168h > Remaining Estimate: 168h > > In Jan 2023, Microsoft Azure AKS replaced its original pod-managed identity > with with [Azure Active Directory (Azure AD) workload > identities|https://learn.microsoft.com/en-us/azure/active-directory/develop/workload-identities-overview] > (preview), which integrate with the Kubernetes native capabilities to > federate with any external identity providers. This approach is simpler to > use and deploy. > Refer to > [https://learn.microsoft.com/en-us/azure/aks/workload-identity-overview|https://learn.microsoft.com/en-us/azure/aks/workload-identity-overview.] > and [https://azure.github.io/azure-workload-identity/docs/introduction.html] > for more details. > The basic use scenario is to access Azure cloud resources (such as cloud > storage) from Kubernetes (such as AKS) workload using Azure managed identity > federated with Kubernetes service account. The credential environment > variables in pod projected by Azure AD workload identity are like following: > AZURE_AUTHORITY_HOST: (Injected by the webhook, > [https://login.microsoftonline.com/]) > AZURE_CLIENT_ID: (Injected by the webhook) > AZURE_TENANT_ID: (Injected by the webhook) > AZURE_FEDERATED_TOKEN_FILE: (Injected by the webhook, > /var/run/secrets/azure/tokens/azure-identity-token) > The token in the file pointed by AZURE_FEDERATED_TOKEN_FILE is a JWT (JASON > Web Token) client assertion token which we can use to request to > AZURE_AUTHORITY_HOST (url is AZURE_AUTHORITY_HOST + tenantId + > "/oauth2/v2.0/token") for a AD token which can be used to directly access > the Azure cloud resources. > This approach is very common and similar among cloud providers such as AWS > and GCP. Hadoop AWS integration has WebIdentityTokenCredentialProvider to > handle the same case. > The existing MsiTokenProvider can only handle the managed identity associated > with Azure VM instance. We need to implement a WorkloadIdentityTokenProvider > which handle Azure Workload Identity case. For this, we need to add one > method (getTokenUsingJWTAssertion) in AzureADAuthenticator which will be used > by WorkloadIdentityTokenProvider. > -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-issues-h...@hadoop.apache.org