Partilhar via


Configurar a autenticação do Microsoft Entra para um cluster do Azure Red Hat OpenShift

Neste artigo, você usa a CLI do Azure para configurar a autenticação do Microsoft Entra para um cluster do Azure Red Hat OpenShift. Você cria variáveis que são usadas em comandos que geram uma URL de retorno de chamada OAuth, registram uma aplicação com um segredo de cliente, e atualizam as permissões da aplicação.

Pré-requisitos

  • Um cluster existente do Azure Red Hat OpenShift. Se você não tiver um cluster, consulte Criar um novo cluster.
  • Azure CLI 2.30.0 ou posterior instalado no seu computador. Use az --version para localizar a versão instalada da CLI do Azure. Se precisar de instalar ou atualizar, consulte Install Azure CLI. Você também pode usar o Azure Cloud Shell com Bash para executar comandos.
  • OpenShift CLI instalado no seu computador ou no seu Bash Cloud Shell. Para obter mais informações, consulte Instalar a CLI do OpenShift.

Criar variáveis

Recupere as URLs específicas do cluster usadas para configurar o aplicativo Microsoft Entra.

Defina as variáveis para grupo de recursos e nome do cluster. Substitua <resourceGroupName> pelo nome do grupo de recursos e <aroClusterName> pelo nome do cluster.

resourceGroup=<resourceGroupName>
aroCluster=<aroClusterName>

Crie as seguintes variáveis que são usadas em outros comandos para concluir as etapas neste artigo.

___domain=$(az aro show --resource-group $resourceGroup --name $aroCluster --query clusterProfile.___domain --output tsv)
___location=$(az aro show --resource-group $resourceGroup --name $aroCluster --query ___location --output tsv)
apiServer=$(az aro show --resource-group $resourceGroup --name $aroCluster --query apiserverProfile.url --output tsv)
webConsole=$(az aro show --resource-group $resourceGroup --name $aroCluster --query consoleProfile.url --output tsv)

Crie a URL de retorno de chamada do OAuth cluster e armazene-a na variável oauthCallbackURL. O entraID no final da OAuth URL de retorno de chamada deve corresponder ao nome do OAuth provedor de identidade que você criar posteriormente no arquivo oidc.yaml .

O formato do oauthCallbackURL depende se você estiver usando um domínio personalizado.

  • Se você tiver um domínio personalizado como contoso.com, execute o seguinte comando.

    oauthCallbackURL=https://oauth-openshift.apps.$___domain/oauth2callback/entraID
    
  • Se você não estiver usando um domínio personalizado, o $___domain é uma cadeia alfanumérica de oito caracteres que precede o $___location.aroapp.io.

    oauthCallbackURL=https://oauth-openshift.apps.$___domain.$___location.aroapp.io/oauth2callback/entraID
    

Criar um aplicativo Microsoft Entra para autenticação

Crie um aplicativo Microsoft Entra e defina um segredo do cliente para o aplicativo.

appId=$(az ad app create \
  --display-name aro-auth \
  --web-redirect-uris $oauthCallbackURL \
  --query appId --output tsv)

clientSecret=$(az ad app credential reset --id $appId --query password --output tsv)

Os valores são armazenados em variáveis e clientSecret exibe uma mensagem de console informando que a saída do comando contém credenciais. O valor é usado posteriormente neste artigo e, quando terminar, poderá limpar a variável usando o clientSecret="" comando.

Para obter mais informações sobre os comandos para criar o aplicativo e as credenciais, consulte az ad app create e az ad app credential reset.

Recupere a ID do locatário da assinatura proprietária do aplicativo.

tenantId=$(az account show --query tenantId --output tsv)

Crie um arquivo de manifesto para definir as declarações opcionais a serem incluídas no token de ID

Os desenvolvedores de aplicativos podem usar declarações opcionais em seus aplicativos Microsoft Entra para especificar quais declarações desejam em tokens enviados para seu aplicativo.

Pode utilizar as afirmações opcionais para:

  • Selecione outras declarações para incluir em tokens para seu aplicativo.
  • Altere o comportamento de determinadas declarações que o Microsoft Entra ID retorna em tokens.
  • Adicionar e aceder a declarações personalizadas para a sua aplicação.

Você configura o OpenShift para usar a email afirmação e reverter para upn para definir o Nome de Utilizador Preferido, adicionando o upn como parte do token de ID retornado pelo Microsoft Entra ID.

Crie um arquivo manifest.json para configurar o aplicativo Microsoft Entra.

cat > manifest-test-file.json<< EOF
{
  "idToken": [
    {
      "name": "email",
      "source": null,
      "essential": false,
      "additionalProperties": []
    },
    {
      "name": "upn",
      "source": null,
      "essential": false,
      "additionalProperties": []
    }
  ]
}
EOF

Atualize as declarações opcionais do aplicativo Microsoft Entra com um manifesto

Para usar o ficheiro de manifesto e atualizar a aplicação optionalClaims, execute o seguinte comando.

az ad app update \
  --id $appId \
  --optional-claims @manifest.json

Atualizar as permissões de escopo do aplicativo Microsoft Entra

Para poder ler as informações do usuário do Microsoft Entra ID, precisamos definir os escopos adequados.

Adicione permissão para o escopo do Microsoft Graph User.Read para habilitar o login e o perfil de usuário de leitura. Para obter mais informações, consulte User.Read.

az ad app permission add \
  --api 00000003-0000-0000-c000-000000000000 \
  --api-permissions e1fe6dd8-ba31-4d61-89e7-88639da4683d=Scope \
  --id $appId

Você pode ignorar a mensagem para conceder o consentimento, a menos que esteja autenticado como Administrador Global para esta ID do Microsoft Entra. Os usuários de domínio padrão são solicitados a conceder consentimento quando entram no cluster pela primeira vez com suas credenciais do Microsoft Entra.

Atribuir usuários e grupos ao cluster (opcional)

Os aplicativos registrados em um locatário do Microsoft Entra estão, por padrão, disponíveis para todos os usuários do locatário que se autenticarem com êxito. O Microsoft Entra ID permite que administradores e desenvolvedores de locatários restrinjam um aplicativo a um conjunto específico de usuários ou grupos de segurança no locatário.

Siga as instruções na documentação do Microsoft Entra para Restringir um aplicativo Microsoft Entra a um conjunto de usuários.

Configurar autenticação OpenShift OpenID

Recupere as kubeadmin credenciais. Execute o seguinte comando para localizar a senha do kubeadmin usuário.

kubeadminPassword=$(az aro list-credentials \
  --name $aroCluster \
  --resource-group $resourceGroup \
  --query kubeadminPassword --output tsv)

Entre no servidor de API do cluster OpenShift usando o seguinte comando.

oc login $apiServer --username kubeadmin --password $kubeadminPassword

Crie um segredo do OpenShift para armazenar o segredo do aplicativo Microsoft Entra.

oc create secret generic openid-client-secret-azuread \
  --namespace openshift-config \
  --from-literal=clientSecret=$clientSecret

Crie um arquivo oidc.yaml para configurar a autenticação OpenShift OpenID contra o Microsoft Entra ID.

cat > oidc.yaml<< EOF
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: entraID
    mappingMethod: claim
    type: OpenID
    openID:
      clientID: $appId
      clientSecret:
        name: openid-client-secret-azuread
      extraScopes:
      - email
      - profile
      extraAuthorizeParameters:
        include_granted_scopes: "true"
      claims:
        preferredUsername:
        - email
        - upn
        name:
        - name
        email:
        - email
      issuer: https://login.microsoftonline.com/$tenantId
EOF

Aplique a configuração ao cluster.

oc apply -f oidc.yaml

Você recebe uma resposta como o exemplo a seguir.

oauth.config.openshift.io/cluster configured

Verificar o início de sessão utilizando o Microsoft Entra ID

Saia do OpenShift Web Console e entre novamente, e você verá uma nova opção para entrar com entraID. Pode ser necessário aguardar alguns minutos para que a opção fique disponível.

Captura de tela que mostra a opção Microsoft Entra ID para entrar em um cluster do Azure Red Hat OpenShift.