|
2 | 2 | title: Use an Azure AD workload identities (preview) on Azure Kubernetes Service (AKS)
|
3 | 3 | description: Learn about Azure Active Directory workload identity (preview) for Azure Kubernetes Service (AKS) and how to migrate your application to authenticate using this identity.
|
4 | 4 | ms.topic: article
|
5 |
| -ms.date: 03/27/2023 |
| 5 | +ms.date: 03/28/2023 |
6 | 6 |
|
7 | 7 | ---
|
8 | 8 |
|
9 |
| -# Use Azure AD workload identity (preview) with Azure Kubernetes Service (AKS) |
| 9 | +# Use Azure AD workload identity with Azure Kubernetes Service (AKS) |
10 | 10 |
|
11 |
| -Today with Azure Kubernetes Service (AKS), you can assign [managed identities at the pod-level][use-azure-ad-pod-identity], which has been a preview feature. This pod-managed identity allows the hosted workload or application access to resources through Azure Active Directory (Azure AD). For example, a workload stores files in Azure Storage, and when it needs to access those files, the pod authenticates itself against the resource as an Azure managed identity. This authentication method has been replaced with [Azure Active Directory (Azure AD) workload identities][azure-ad-workload-identity] (preview), which integrate with the Kubernetes native capabilities to federate with any external identity providers. This approach is simpler to use and deploy, and overcomes several limitations in Azure AD pod-managed identity: |
12 |
| - |
13 |
| -- Removes the scale and performance issues that existed for identity assignment |
14 |
| -- Supports Kubernetes clusters hosted in any cloud or on-premises |
15 |
| -- Supports both Linux and Windows workloads |
16 |
| -- Removes the need for Custom Resource Definitions and pods that intercept [Azure Instance Metadata Service][azure-instance-metadata-service] (IMDS) traffic |
17 |
| -- Avoids the complicated and error-prone installation steps such as cluster role assignment from the previous iteration |
| 11 | +Azure AD Workload Identity leverages [Service Account Token Volume Projection](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#serviceaccount-token-volume-projection) giving pods the ability to use a Kubernetes identity (service account), to which a Kubernetes token is issued and [OIDC federation](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#openid-connect-tokens) which enables Kubernetes applications to access Azure cloud resources securely with Azure Active Directory based on annotated service accounts. |
18 | 12 |
|
19 | 13 | Azure AD workload identity works especially well with the Azure Identity client library using the [Azure SDK][azure-sdk-download] and the [Microsoft Authentication Library][microsoft-authentication-library] (MSAL) if you're using [application registration][azure-ad-application-registration]. Your workload can use any of these libraries to seamlessly authenticate and access Azure cloud resources.
|
20 | 14 |
|
21 |
| -This article helps you understand this new authentication feature, and reviews the options available to plan your migration phases and project strategy. |
22 |
| - |
23 |
| -[!INCLUDE [preview features callout](./includes/preview/preview-callout.md)] |
| 15 | +This article helps you understand this new authentication feature, and reviews the options available to plan your project strategy and potential migration from Pod Identity. |
24 | 16 |
|
25 | 17 | ## Dependencies
|
26 | 18 |
|
27 | 19 | - AKS supports Azure AD workload identities on version 1.22 and higher.
|
28 | 20 |
|
29 |
| -- The Azure CLI version 2.40.0 or later. Run `az --version` to find the version, and run `az upgrade` to upgrade the version. If you need to install or upgrade, see [Install Azure CLI][install-azure-cli]. |
| 21 | +- The Azure CLI version 2.47.0 or later. Run `az --version` to find the version, and run `az upgrade` to upgrade the version. If you need to install or upgrade, see [Install Azure CLI][install-azure-cli]. |
| 22 | + |
| 23 | +## Azure Identity SDK |
30 | 24 |
|
31 |
| -- The `aks-preview` extension version 0.5.102 or later. |
| 25 | +The following client libraries are the **minimum** version required |
32 | 26 |
|
33 |
| -- The following are the minimum versions of the [Azure Identity][azure-identity-libraries] client library supported: |
| 27 | +| Language | Library | Minimum Version | Example | |
| 28 | +|-----------|-----------|----------|----------| |
| 29 | +| Go | [azure-sdk-for-go](https://github.com/Azure/azure-sdk-for-go) | [sdk/azidentity/v1.3.0-beta.1](https://github.com/Azure/azure-sdk-for-go/releases/tag/sdk/azidentity/v1.3.0-beta.1)| [Link](https://github.com/Azure/azure-workload-identity/tree/main/examples/azure-identity/go) | |
| 30 | +| C# | [azure-sdk-for-net](https://github.com/Azure/azure-sdk-for-net) | [Azure.Identity_1.5.0](https://github.com/Azure/azure-sdk-for-net/releases/tag/Azure.Identity_1.5.0)| [Link](https://github.com/Azure/azure-workload-identity/tree/main/examples/azure-identity/dotnet) | |
| 31 | +| JavaScript/TypeScript | [azure-sdk-for-js](https://github.com/Azure/azure-sdk-for-js) | [@azure/identity_2.0.0](https://github.com/Azure/azure-sdk-for-js/releases/tag/@azure/identity_2.0.0) | [Link](https://github.com/Azure/azure-workload-identity/tree/main/examples/azure-identity/node) | |
| 32 | +| Python | [azure-sdk-for-python](https://github.com/Azure/azure-sdk-for-python) | [azure-identity_1.7.0](https://github.com/Azure/azure-sdk-for-python/releases/tag/azure-identity_1.7.0) | [Link](https://github.com/Azure/azure-workload-identity/tree/main/examples/azure-identity/python) | |
| 33 | +| Java | [azure-sdk-for-java]() | [azure-identity_1.4.0](https://github.com/Azure/azure-sdk-for-java/releases/tag/azure-identity_1.4.0) | [Link](https://github.com/Azure/azure-workload-identity/tree/main/examples/azure-identity/java) | |
34 | 34 |
|
35 |
| - * [.NET][dotnet-azure-identity-client-library] 1.5.0 |
36 |
| - * [Java][java-azure-identity-client-library] 1.4.0 |
37 |
| - * [JavaScript][javascript-azure-identity-client-library] 2.0.0 |
38 |
| - * [Python][python-azure-identity-client-library] 1.7.0 |
| 35 | +## Microsoft Authentication Library (MSAL) |
| 36 | + |
| 37 | +The following client libraries are the **minimum** version required |
| 38 | + |
| 39 | +| Language | Library | Image | Example | Has Windows | |
| 40 | +|-----------|-----------|----------|----------|----------| |
| 41 | +| Go | [microsoft-authentication-library-for-go](https://github.com/AzureAD/microsoft-authentication-library-for-go) | ghcr.io/azure/azure-workload-identity/msal-go | [Link](https://github.com/Azure/azure-workload-identity/tree/main/examples/msal-go) | Yes | |
| 42 | +| C# | [microsoft-authentication-library-for-dotnet](https://github.com/AzureAD/microsoft-authentication-library-for-dotnet) | ghcr.io/azure/azure-workload-identity/msal-net | [Link](https://github.com/Azure/azure-workload-identity/tree/main/examples/msal-net/akvdotnet) | Yes | |
| 43 | +| JavaScript/TypeScript | [microsoft-authentication-library-for-js](https://github.com/AzureAD/microsoft-authentication-library-for-js) | ghcr.io/azure/azure-workload-identity/msal-node | [Link](https://github.com/Azure/azure-workload-identity/tree/main/examples/msal-node) | No | |
| 44 | +| Python | [microsoft-authentication-library-for-python](https://github.com/AzureAD/microsoft-authentication-library-for-python) | ghcr.io/azure/azure-workload-identity/msal-python | [Link](https://github.com/Azure/azure-workload-identity/tree/main/examples/msal-python) | No | |
| 45 | +| Java | [microsoft-authentication-library-for-java](https://github.com/AzureAD/microsoft-authentication-library-for-java) | ghcr.io/azure/azure-workload-identity/msal-java | [Link](https://github.com/Azure/azure-workload-identity/tree/main/examples/msal-java) | No | |
39 | 46 |
|
40 | 47 | ## Limitations
|
41 | 48 |
|
42 | 49 | - You can only have 20 federated identity credentials per managed identity.
|
43 | 50 | - It takes a few seconds for the federated identity credential to be propagated after being initially added.
|
44 | 51 |
|
45 |
| -## Language SDK examples |
46 |
| - - [Azure Identity SDK](https://azure.github.io/azure-workload-identity/docs/topics/language-specific-examples/azure-identity-sdk.html) |
47 |
| - - [MSAL](https://azure.github.io/azure-workload-identity/docs/topics/language-specific-examples/msal.html) |
48 |
| - |
49 | 52 | ## How it works
|
50 | 53 |
|
51 | 54 | In this security model, the AKS cluster acts as token issuer, Azure Active Directory uses OpenID Connect to discover public signing keys and verify the authenticity of the service account token before exchanging it for an Azure AD token. Your workload can exchange a service account token projected to its volume for an Azure AD token using the Azure Identity client library or the Microsoft Authentication Library.
|
|
0 commit comments