Tempo estimado para a conclusão: 18 horas
Proprietário do componente operacional: OIC
Como configurar uma conexão OIDC
As conexões OIDC são gerenciadas pela configuração de estado desejado (DSC, na sigla em inglês). Embora possam ser criados manualmente, o DSC é o método preferido.
Faça login na VM CONFIG1 como usuário
Marvin.Abra c:\config\config.ps1 usando o VSCode ou o editor de sua escolha.
Pesquise
-ADFS1para encontrar o nó de configuração do servidor ADFS.# Example ADFS server noe in config.ps1 NodeName = "$Site1Code-ADFS1" HyperVHost = 'AA-OC-BM01' Role = 'adfs' IPv4Addr = '172.21.0.23'Uma matriz chamada
AdfsAppGrpcontém tabelas de hash de conexões OIDC. Copie toda a tabela de hash deExample-OIDCe cole-a depois da tabela de hashExample-OIDCatual. Exemplo:@{ Name = 'Example-OIDC' AdfsSrvApp = @{ … } @{ Name = 'Example-OIDC' AdfsSrvApp = @{ … }Atualize os parâmetros
NameeRedirectURIcom os valores associados à nova conexão OIDC. Salve o arquivo config.ps1.Abra uma janela do PowerShell como administrador e atualize a configuração do servidor ADFS1. Substitua [Site] pelo código do seu site.
$Cred = Get-Credential -Message "Enter Admin Credentials for ADFS1" c:\dsc\Update-RemoteHost.ps1 -ComputerName [Site]-ADFS1 -Credential $Cred -NoThirdPartyValide a configuração do OIDC fazendo login na VM ADFS1, abrindo o MMC Gerenciamento do AD FS e clicando em Grupos de aplicativos.
Com a VM ADFS1 aberta, abra
C:\confige procure um arquivo chamado<Your Connector Name> Srv App.txt. Salve os valoresIdentifiereClientSecretencontrados nesse arquivo para uso posterior com seu aplicativo. Exclua esse arquivo depois que os valores de identificador e secreto forem registrados.
Configuração do OIDC para o console de infraestrutura do GDC
Coletar informações do conector OIDC para a implantação do GDC.
- URIs de redirecionamento:
https://ais-core.<GDC_name>.<DNS_domain>/finish-login, por exemplo,https://ais-core.example.domain.local/finish-login. - URL do console de serviços do GDC:
https://infra-console.<GDC_name>.<DNS_domain>, por exemplo,https://infra-console.example.domain.local.
- URIs de redirecionamento:
Siga as etapas anteriores para criar a conexão OIDC.
Depois que o Anthos Identity Service (AIS) na célula do GDC for configurado, teste a configuração do OIDC com o URL do console do GDC.
- Faça login em uma estação de trabalho da OIC.
- Abra o Chrome e navegue até o URL do console de infraestrutura, por exemplo,
https://infra-console.example.domain.local. - Quando solicitado, digite seu nome de usuário e senha. Se as credenciais forem válidas, você será redirecionado para a GUI do console de infraestrutura.
Repita essa etapa conforme necessário para cada célula do GDC gerenciada por esse servidor do ADFS.
Configuração de DNS do GDC para o ADFS
Faça login no controlador do sistema ou no bootstrap.
Exporte
kubeconfigpara o cluster de administrador raiz:export KUBECONFIG=/root/release/root-admin/root-admin-kubeconfigConfigure o OCIT_DOMAIN usando uma zona de encaminhamento. Substitua OCIT_DOMAIN pelo nome de domínio do OCIT e os endpoints pelos endereços IP do OC DNS:
kubectl apply -f - <<EOF apiVersion: network.private.gdc.goog/v1alpha1 kind: DNSZone metadata: namespace: dns-system name: ocit-domain spec: domainName: OCIT_DOMAIN forwardingConfig: # Set to OC DNS IPs (the AD domain controllers) endpoints: - 192.0.2.0 - 192.0.2.1 replicateToTenantOrg: true EOFA saída será semelhante a este exemplo:
dnszone.network.private.gdc.goog/ocit-domain createdSe as mudanças não forem aplicadas, reinicie a implantação:
kubectl rollout restart deployment -n dns-system gpc-coredns-forwarderEssa mudança de DNS é propagada para todos os clusters no GDC.
Com o kubeconfig do administrador raiz, valide se a resolução de domínio do OCIT está funcionando conforme o esperado:
NAMESERVER=$(kubectl -n dns-system get service gpc-coredns-forwarder-udp | \ awk '/[0-9]\./ {print $4}') dig +short @${NAMESERVER} fs.OCIT_DOMAINExporte
kubeconfigpara o cluster de administrador da organização:export KUBECONFIG=/root/release/org-admin/org-admin-kubeconfigAplique o kubeconfig do administrador da organização e valide se a resolução de domínio do OCIT está funcionando conforme o esperado:
NAMESERVER=$(kubectl -n dns-system get service gpc-coredns-infra-forwarder | \ awk '/[0-9]\./ {print $4}') dig +short @${NAMESERVER} fs.OCIT_DOMAIN
Configuração do AIS do GDC para o console
Faça login no ADFS1 e abra o MMC de gerenciamento do AD FS.
Clique em "Serviço > Certificados".
Clique duas vezes no certificado de comunicações de serviço.
Clique na guia "Caminho da certificação".
Selecione o certificado mais acima, rotulado como "Raiz".
Clique em "Ver certificado".
Selecione a guia "Detalhes" e clique em "Copiar para arquivo...".
- Salvar no formato Base-64 (.CER)
Copie a CA raiz do ADFS para o controlador do sistema ou o bootstrap como
adfs.cer.Faça login no controlador do sistema ou no bootstrap e exporte a CA raiz do ADFS para uma variável de shell com codificação base64. O comando a seguir codifica o certificado, incluindo cabeçalhos, em base64 como uma única linha (sem caracteres de nova linha):
export BASE64_CERT=$(base64 adfs.cer | tr -d "\n\r")Exporte o cluster de administrador raiz
kubeconfig:export KUBECONFIG=/root/release/root-admin/root-admin-kubeconfigNavegue até o repositório
iace adicione a estrutura de diretórios da organização global:cd iac; mkdir -p infrastructure/global/orgs/root/Adicione o arquivo
ioauthmethod.yamlpara a organização:cat > infrastructure/global/orgs/root/ioauthmethod.yaml << EOF apiVersion: iam.global.private.gdc.goog/v1alpha1 kind: IOAuthMethod metadata: name: adfs-oidc namespace: gpc-system spec: oidc: certificateAuthorityData: ADFS_CERT_BASE64 clientID: ADFS_CLIENT_ID clientSecret: ADFS_CLIENT_SECRET groupPrefix: gdch-infra-operator- groupsClaim: groups issuerURI: https://fs.OCIT_DOMAIN/adfs scopes: openid email offline_access userClaim: email userPrefix: gdch-infra-operator- cloudConsoleRedirectURI: http://cloud.console.not.enabled kubectlRedirectURI: http://localhost:9879/callback EOFSubstitua as seguintes variáveis:
Variável Definição ADFS_CERT_BASE64O valor de
$BASE64_CERTque você criou em uma etapa anterior.Esse certificado codificado em PEM e em base64 que o ADFS usa para autossinatura é exigido pelo GKE Identity Service para estabelecer uma conexão segura com uma instância interna do ADFS.
ADFS_CLIENT_IDO ID do OpenID Connect para o cliente da organização no ADFS. ADFS_CLIENT_SECRETA chave secreta do OpenID Connect para o cliente da organização registrada no ADFS. OCIT_DOMAINO nome de domínio do OCIT. Para mais informações, consulte Configuração de DNS do GDC para o ADFS. Adicione o arquivo
kustomization.yamlà pasta globaliac:cat > infrastructure/global/orgs/root/kustomization.yaml << EOF apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization metadata: name: ioauthmethod-kustomization resources: - ioauthmethod.yaml EOFAdicione e faça commit do arquivo YAML da organização e dos arquivos kustomize:
git add "infrastructure/global" git add "infrastructure/zonal" git commitEnvie a atualização para o GitLab:
git -c http.sslVerify=false pushAguarde a revisão e a fusão do código.
Verifique se o IdP recém-adicionado existe em
ClientConfig:kubectl get ClientConfig default -n kube-public -o yaml
Configurar a autenticação multifator do ADFS
Requisitos
- As YubiKeys foram provisionadas para usuários por seção 5.16 Aplicações de política e proteção.
- Todas as etapas anteriores do AD FS foram confirmadas como funcionando conforme o esperado. Isso significa que os usuários podem acessar os endpoints do GDC usando a autenticação de nome de usuário e senha com o AD FS.
Instruções
Siga as etapas abaixo para configurar a autenticação multifator do ADFS.
Ativar a autenticação de certificado do ADFS globalmente
Siga as etapas abaixo no host do ADFS1.
- Use o RDP para se conectar ao host ADFS1 usando sua conta -sa, por exemplo, username-sa.
- Execute uma janela do PowerShell como
Administrator. Verifique se CertificateAuthentication já está ativado no seu ambiente:
# Checking current Global Authentication Policy for # PrimaryIntranetAuthenticationProvider Get-AdfsGlobalAuthenticationPolicy | Select-Object ` -Property PrimaryIntranetAuthenticationProvider # Example output, note it is missing CertificateAuthentication PrimaryIntranetAuthenticationProvider : {FormsAuthentication, WindowsAuthentication, MicrosoftPassportAuthentication}Defina o PrimaryIntranetAuthenticationProvider para incluir CertificateAuthentication. Além disso, remova um método de autenticação não usado no OC IT, MicrosoftPassportAuthentication.
# Setting the Global Authentication Policy for # PrimaryIntranetAuthenticationProvider to include CertificateAuthentication Set-AdfsGlobalAuthenticationPolicy -PrimaryIntranetAuthenticationProvider ` @('FormsAuthentication', 'WindowsAuthentication', 'CertificateAuthentication') # Validating the update to Global Authentication Policy for # PrimaryIntranetAuthenticationProvider Get-AdfsGlobalAuthenticationPolicy | Select-Object ` -Property PrimaryIntranetAuthenticationProvider # Desired output PrimaryIntranetAuthenticationProvider : {CertificateAuthentication, FormsAuthentication, WindowsAuthentication}
Testar a autenticação de certificado do ADFS
Conclua as etapas a seguir em uma estação de trabalho de TI da OC.
- Faça login em uma estação de trabalho de TI da OC com sua conta sem privilégios.
- Abra o navegador Chrome e acesse infra-console.CELL_NAME.DOMAIN como faria normalmente, por exemplo, https://infra-console.example.domain.local.
Clique na opção Fazer login usando um certificado que aparece abaixo do botão Fazer login.
Selecione o certificado de usuário sem privilégios na janela de diálogo e clique em OK.
Quando solicitado, digite o PIN da YubiKey e clique em OK.
Se a autenticação do ADFS estiver funcionando corretamente, a GUI do infra-console vai aparecer como se você tivesse inserido seu nome de usuário e senha.
Saia do console de infraestrutura usando o botão Sair e feche todas as janelas do Chrome. Essa ação remove as credenciais armazenadas em cache e permite testar cada endpoint do GDC.
Repita as etapas desta seção para cada endpoint do GDC. Não se esqueça de fazer logout e fechar o Chrome a cada vez para garantir que os prompts de autenticação do AD FS sejam apresentados:
- Console.gdchservices (organização gdchservices)
- GitLab
- ServiceNow
- Outras organizações
Aplicar rigorosamente a autenticação MFA do ADFS globalmente
Siga as etapas abaixo no host do ADFS1.
- Faça RDP no host ADFS1 como sua conta -sa, por exemplo, alexb-sa.
- Execute uma janela do PowerShell como administrador.
Defina o PrimaryIntranetAuthenticationProvider para incluir SOMENTE CertificateAuthentication.
# Setting the Global Authentication Policy for # PrimaryIntranetAuthenticationProvider to include CertificateAuthentication Set-AdfsGlobalAuthenticationPolicy -PrimaryIntranetAuthenticationProvider ` @('CertificateAuthentication') # Validating the update to Global Authentication Policy for # PrimaryIntranetAuthenticationProvider Get-AdfsGlobalAuthenticationPolicy | Select-Object ` -Property PrimaryIntranetAuthenticationProvider # Desired output PrimaryIntranetAuthenticationProvider : {CertificateAuthentication}
Teste novamente cada endpoint do GDC
Execute as etapas a seguir em uma estação de trabalho de TI da OC.
- Faça login em uma estação de trabalho de TI da OC com sua conta sem privilégios.
- Abra o navegador Chrome e acesse infra-console.CELL_NAME.DOMAIN como faria normalmente, por exemplo, https://infra-console.example.domain.local.
O portal do AD FS pede imediatamente um certificado ou uma YubiKey. Os campos de nome de usuário ou senha não vão mais aparecer.
Depois de selecionar o certificado, insira o PIN da YubiKey, idêntico ao teste anterior.
A configuração está concluída.