Compartilhar via


Configurar a autenticação do Microsoft Entra para um cluster do Red Hat OpenShift 4 no Azure (CLI)

Se você optar por instalar e usar a CLI localmente, este artigo exigirá que a versão 2.30.0 ou posterior da CLI do Azure esteja em execução. Execute az --version para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.

Recupere suas URLs específicas do cluster que serão usadas para configurar o aplicativo do Microsoft Entra.

Defina as variáveis para o nome do cluster e do grupo de recursos.

Substitua <resource_group> pelo nome do grupo de recursos e <aro_cluster> pelo nome do cluster.

resource_group=<resource_group>
aro_cluster=<aro_cluster>

Construa a URL de retorno de chamada OAuth do cluster e armazene-a em uma variável oauthCallbackURL.

Observação

A seção AAD na URL de retorno de chamada do OAuth deve corresponder ao nome do provedor de identidade do OAuth que você vai configurar mais tarde.

domain=$(az aro show -g $resource_group -n $aro_cluster --query clusterProfile.domain -o tsv)
location=$(az aro show -g $resource_group -n $aro_cluster --query location -o tsv)
apiServer=$(az aro show -g $resource_group -n $aro_cluster --query apiserverProfile.url -o tsv)
webConsole=$(az aro show -g $resource_group -n $aro_cluster --query consoleProfile.url -o tsv)

O formato da oauthCallbackURL é um pouco diferente com domínios personalizados:

  • Execute o comando a seguir se estiver usando um domínio personalizado, por exemplo, contoso.com.

    oauthCallbackURL=https://oauth-openshift.apps.$domain/oauth2callback/AAD
    
  • Se você não estiver usando um domínio personalizado, o $domain será uma cadeia de caracteres alfanumérica de oito caracteres e será estendido por $location.aroapp.io.

    oauthCallbackURL=https://oauth-openshift.apps.$domain.$location.aroapp.io/oauth2callback/AAD
    

Observação

A seção AAD na URL de retorno de chamada do OAuth deve corresponder ao nome do provedor de identidade do OAuth que você vai configurar mais tarde.

Criar um aplicativo do Microsoft Entra para autenticação

Substitua <client_secret> por uma senha segura para o aplicativo.

client_secret=<client_secret>

Crie um aplicativo do Microsoft Entra e recupere o identificador de aplicativo criado.

app_id=$(az ad app create \
  --query appId -o tsv \
  --display-name aro-auth \
  --reply-urls $oauthCallbackURL \
  --password $client_secret)

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

tenant_id=$(az account show --query tenantId -o tsv)

Criar 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 nos aplicativos do Microsoft Entra para especificar quais declarações eles querem nos tokens enviados ao aplicativo.

Você pode usar declarações opcionais para:

  • Selecione declarações adicionais para incluir nos tokens para o aplicativo.
  • Altere o comportamento de determinadas declarações que o Microsoft Entra ID retorna em tokens.
  • Adicione e acesse as declarações personalizadas para o aplicativo.

Vamos configurar o OpenShift para usar a declaração email e voltar ao upn para definir o nome de usuário preferencial adicionando o upn como parte do token de ID retornado pelo Microsoft Entra ID.

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

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

Atualizar os optionalClaims do aplicativo do Microsoft Entra com um manifesto

az ad app update \
  --set optionalClaims.idToken=@manifest.json \
  --id $app_id

Atualizar as permissões de escopo do aplicativo do Microsoft Entra

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

Adicione uma permissão para o escopo Azure Active Directory Graph.User.Read a fim de habilitar a entrada e ler o perfil do usuário.

az ad app permission add \
 --api 00000002-0000-0000-c000-000000000000 \
 --api-permissions 311a71cc-e848-46a1-bdf8-97ff7156d8e6=Scope \
 --id $app_id

Observação

Você pode ignorar com segurança a mensagem para conceder o consentimento, a menos que esteja autenticado como um Administrador global nesse Microsoft Entra ID. Os usuários de domínio padrão precisarão conceder o consentimento quando fizerem logon no cluster pela primeira vez usando as respectivas 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 autenticar com sucesso. O Microsoft Entra ID permite que os desenvolvedores e administradores 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 atribuir usuários e grupos ao aplicativo.

Configurar a autenticação OpenID do OpenShift

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

kubeadmin_password=$(az aro list-credentials \
  --name $aro_cluster \
  --resource-group $resource_group \
  --query kubeadminPassword --output tsv)

Faça logon no servidor de API do cluster do OpenShift usando o comando a seguir.

oc login $apiServer -u kubeadmin -p $kubeadmin_password

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

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

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

cat > oidc.yaml<< EOF
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: AAD
    mappingMethod: claim
    type: OpenID
    openID:
      clientID: $app_id
      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/$tenant_id
EOF

Aplique a configuração ao cluster.

oc apply -f oidc.yaml

Você receberá uma resposta semelhante à mostrada a seguir.

oauth.config.openshift.io/cluster configured

Verificar o logon por meio do Microsoft Entra ID

Se agora você fizer logoff do Console Web do OpenShift e tentar fazer logon novamente, verá uma nova opção para fazer logon com o Microsoft Entra ID. Talvez você precise aguardar alguns minutos.

Tela de logon com a opção Microsoft Entra