Share via


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

Se você optar por instalar e usar a CLI localmente, este artigo exigirá que você esteja executando a CLI do Azure versão 2.30.0 ou posterior. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).

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

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

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.

Nota

A AAD seção na URL de retorno de chamada OAuth deve corresponder ao nome do provedor de identidade OAuth que você 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 do oauthCallbackURL é ligeiramente diferente com domínios personalizados:

  • Execute o seguinte comando se você 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 alnum de oito caracteres e será estendido por $location.aroapp.io.

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

Nota

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

Criar um aplicativo Microsoft Entra para autenticação

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

client_secret=<client_secret>

Crie um aplicativo 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 do locatário da assinatura proprietária do aplicativo.

tenant_id=$(az account show --query tenantId -o 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:

  • Selecionar afirmações adicionais para incluir nos tokens da aplicação.
  • Altere o comportamento de determinadas declarações que o Microsoft Entra ID retorna em tokens.
  • Adicionar e aceder a afirmações personalizadas da aplicação.

Vamos configurar o OpenShift para usar a declaração e voltar para upn definir o Nome de Usuário Preferencial adicionando o emailupn como parte do token de ID retornado pelo ID do Microsoft Entra.

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

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

Atualize as declarações opcionais do aplicativo 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 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 Graph.User.Read do Azure Ative Directory para habilitar o login e o perfil de usuário de leitura.

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

Nota

Você pode ignorar com segurança 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 serão solicitados a conceder consentimento quando fizerem login no cluster pela primeira vez usando 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 atribuir usuários e grupos ao aplicativo.

Configurar autenticação OpenShift OpenID

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

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

Faça login no servidor de API do cluster OpenShift usando o seguinte comando.

oc login $apiServer -u kubeadmin -p $kubeadmin_password

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=$client_secret

Crie um arquivo oidc.yaml para configurar a autenticação OpenShift OpenID em relação ao 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 à seguinte.

oauth.config.openshift.io/cluster configured

Verificar o login através do Microsoft Entra ID

Se agora terminar sessão na Consola Web OpenShift e tentar iniciar sessão novamente, ser-lhe-á apresentada uma nova opção para iniciar sessão com o Microsoft Entra ID. Pode ter de esperar alguns minutos.

Log in screen with Microsoft Entra option