A identidade da instância, composta por um documento de identidade e uma assinatura de identidade, identifica com segurança uma instância ECS. Esse recurso serve como base de confiança para controle de acesso a aplicações e ativação de software. Este tópico descreve o conceito de identidade da instância, seus casos de uso e os procedimentos para obtê-la e utilizá-la.
Identidade da instância
A identidade da instância consiste em um documento de identidade da instância (documento) gerado dinamicamente e em uma assinatura de identidade da instância (assinatura).
-
Documento de identidade da instância
O documento de identidade da instância fornece informações sobre a instância, como seu ID de instância e endereço IP. A tabela a seguir descreve as propriedades presentes no documento.
Parâmetro
Descrição
owner-account-id
O ID da conta Alibaba Cloud proprietária da instância.
instance-id
O ID da instância.
mac
O endereço MAC da interface de rede primária da instância.
region-id
O ID da região à qual a instância pertence.
serial-number
O número de série da instância.
zone-id
O ID da zona à qual a instância pertence.
instance-type
O tipo da instância.
image-id
O ID da imagem utilizada pela instância.
private-ipv4
O endereço IPv4 privado da instância.
-
Assinatura de identidade da instância
A assinatura de identidade da instância verifica a autenticidade e a integridade do documento de identidade da instância. Essa assinatura é assinada digitalmente no formato PKCS#7 para garantir segurança e confiabilidade.
As assinaturas de identidade da instância suportam um parâmetro
audiencepersonalizado, utilizado na autenticação para evitar o uso indevido da assinatura. O parâmetroaudiencepode ser uma string aleatória, um timestamp, informações que mudam regularmente ou dados gerados por algoritmo. Ao transmitir o parâmetroaudience, torna-se difícil para terceiros adivinharem seu valor, mesmo que obtenham partes do documento e da assinatura de identidade da instância. O parâmetroaudienceé usado exclusivamente para autenticação. O parâmetroaudienceé usado para autenticação. Para mais informações, consulte Uso da identidade da instância.
Casos de uso
Utilize a identidade da instância para autenticação, autorização ou verificação de ambiente nos seguintes cenários:
Licenciamento tradicional de software com códigos de ativação de uso único é muito rígido para ambientes de nuvem dinâmicos. Ao listar sua aplicação no Alibaba Cloud Marketplace, use a identidade da instância para implementar uma autorização de usuário flexível e dinâmica.
Ao gravar dados confidenciais em uma instância ECS, utilize a identidade da instância para confirmar que a gravação ocorre na instância correta, evitando escritas acidentais em ambientes diferentes.
Outros cenários que exigem a confirmação da origem de um servidor de destino.
Obtenção da identidade da instância
(Recomendado) Modo de reforço de segurança
-
Instância Linux
# Obtain a server access credential. You must set an expiration time. Do not include the X-Forwarded-For header. TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:<credential-expiration-in-seconds>"` # Obtain the instance identity. curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/<dynamic data> -
Instância Windows
# Obtain a server access credential. You must set an expiration time. Do not include the X-Forwarded-For header. $token = Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "<credential-expiration-in-seconds>"} -Method PUT -Uri http://100.100.100.200/latest/api/token # Obtain the instance identity. Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token" = $token} -Method GET -Uri http://100.100.100.200/latest/<dynamic data>-
<credential-expiration-in-seconds>: A credencial de acesso ao servidor fornece autenticação para aumentar a segurança dos dados. Este valor define o período de validade da credencial em segundos. Valores válidos: 1 a 21600.
É possível reutilizar a credencial até que ela expire. Após a expiração, obtenha uma nova credencial.
Uma credencial é válida apenas para a instância onde foi obtida. Tentativas de uso em outra instância resultarão em negação de acesso.
-
<dynamic data>: Substitua este campo pelo caminho do documento de identidade da instância ou da assinatura desejada.
Documento de identidade da instância: dynamic/instance-identity/document
-
Assinatura de identidade da instância: dynamic/instance-identity/pkcs7?audience=XXXX
ImportanteO parâmetro
?audience=XXXXé opcional. Para mais informações, consulte Assinatura de identidade da instância.
-
Modo normal
-
Instância Linux
curl http://100.100.100.200/latest/<dynamic data> -
Instância Windows (PowerShell)
Invoke-RestMethod http://100.100.100.200/latest/<dynamic data><dynamic data>: Substitua este campo pelo caminho do documento de identidade da instância ou da assinatura desejada.
Documento de identidade da instância: dynamic/instance-identity/document
-
Assinatura de identidade da instância: dynamic/instance-identity/pkcs7?audience=XXXX
ImportanteO parâmetro
?audience=XXXXé opcional. Para mais informações, consulte Assinatura de identidade da instância.
Uso da identidade da instância
Os passos a seguir demonstram como utilizar a identidade da instância no modo de reforço de segurança em uma instância ECS executando Alibaba Cloud Linux 3.
A verificação e o uso da identidade da instância exigem o OpenSSL. Caso o OpenSSL não esteja instalado na sua instância, acesse o site oficial do OpenSSL para baixá-lo e instalá-lo.
-
Conecte-se remotamente à instância Linux.
Para mais informações, consulte Fazer login em uma instância Linux usando o Workbench.
-
(Opcional) Execute os comandos abaixo para visualizar o documento de identidade da instância e a assinatura de identidade da instância.
# Obtain a server access credential and set its expiration to 3600 seconds. TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:3600"` # Obtain the instance identity document. curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/dynamic/instance-identity/document # Obtain the instance identity signature. curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/dynamic/instance-identity/pkcs7TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:3600"` % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 29 100 29 0 0 805 0 --:--:-- --:--:-- --:--:-- 805 curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/dynamic/instance-identity/document {"zone-id":"cn-hangzhou-h","serial-number":"es4xxx","instance-id":"i-bp1xxx","region-id":"cn-hangzhou","private-ipv4":"xxx","owner-account-id":"xxx","mac":"xxx","image-id":"aliyun_3_x64_20G_alibase_20240528.vhd","instance-type":"ecs.e-c1m1.large"} curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/dynamic/instance-identity/pkcs7 MIIDHwYJKo7ThvcNAOcrCoTfDCCAwwCAQExCzAJBgUrDpMCGgUAMTTRWOYJKo7ThvcNAOcrBoTfBSpSCAU77TnpvhmUltaWOiOiJhIoaYW5nbmVhdmS1dToidw2VvalEsl W51bWJ1ciI6TGtIMlINDk4MiNi TO2YmOtNDpzNv1hMTJhI wWyQAMmRhMi3k3OTAQNvTsTmur3RhbmNl1wlkTioia5i3ciDE1dn BqdGo aWJho UEAxM v45mv -
Salve o documento de identidade da instância, a assinatura de identidade da instância e o certificado público da Alibaba Cloud em arquivos.
-
Execute o comando a seguir para salvar o documento de identidade da instância em um arquivo chamado
document.curl 100.100.100.200/latest/dynamic/instance-identity/document > document -
Execute os comandos a seguir para salvar a assinatura de identidade da instância em um arquivo chamado
signature.echo "-----BEGIN CERTIFICATE-----" > signature curl 100.100.100.200/latest/dynamic/instance-identity/pkcs7 >> signature echo "" >> signature echo "-----END CERTIFICATE-----" >> signature -
Execute o comando a seguir para salvar o certificado público da Alibaba Cloud em um arquivo chamado
cert.cer.cat <<EOF > cert.cer -----BEGIN CERTIFICATE----- MIIDdzCCAl+gAwIBAgIEZmbRhzANBgkqhkiG9w0BAQsFADBsMRAwDgYDVQQGEwdV bmtub3duMRAwDgYDVQQIEwdVbmtub3duMRAwDgYDVQQHEwdVbmtub3duMRAwDgYD VQQKEwdVbmtub3duMRAwDgYDVQQLEwdVbmtub3duMRAwDgYDVQQDEwdVbmtub3du MB4XDTE4MDIyMzAxMjkzOFoXDTM4MDIxODAxMjkzOFowbDEQMA4GA1UEBhMHVW5r bm93bjEQMA4GA1UECBMHVW5rbm93bjEQMA4GA1UEBxMHVW5rbm93bjEQMA4GA1UE ChMHVW5rbm93bjEQMA4GA1UECxMHVW5rbm93bjEQMA4GA1UEAxMHVW5rbm93bjCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIJwy5sbZDiNyX4mvdP32pqM YMK4k7+5lRnVR2Fky/5uwyGSPbddNXaXzwEm+u4wIsJiaAN3OZgJpYIoCGik+9lG 5gVAIr0+/3rZ61IbeVE+vDenDd8g/m/YIdYBfC2IbzgS9EVGAf/gJdtDODXrDfQj Fk2rQsvpftVOUs3Vpl9O+jeCQLoRbZYm0c5v7jP/L2lK0MjhiywPF2kpDeisMtnD /ArkSPIlg1qVYm3F19v3pa6ZioM2hnwXg5DibYlgVvsIBGhvYqdQ1KosNVcVGGQa HCUuVGdS7vHJYp3byH0vQYYygzxUJT2TqvK7pD57eYMN5drc7e19oyRQvbPQ3kkC AwEAAaMhMB8wHQYDVR0OBBYEFAwwrnHlRgFvPGo+UD5zS1xAkC91MA0GCSqGSIb3 DQEBCwUAA4IBAQBBLhDRgezd/OOppuYEVNB9+XiJ9dNmcuHUhjNTnjiKQWVk/YDA v+T2V3t9yl8L8o61tRIVKQ++lDhjlVmur/mbBN25/UNRpJllfpUH6oOaqvQAze4a nRgyTnBwVBZkdJ0d1sivL9NZ4pKelJF3Ylw6rp0YMqV+cwkt/vRtzRJ31ZEeBhs7 vKh7F6BiGCHL5ZAwEUYe8O3akQwjgrMUcfuiFs4/sAeDMnmgN6Uq8DFEBXDpAxVN sV/6Hockdfinx85RV2AUwJGfClcVcu4hMhOvKROpcH27xu9bBIeMuY0vvzP2VyOm DoJeqU7qZjyCaUBkPimsz/1eRod6d4P5qxTj -----END CERTIFICATE----- EOF
-
-
Execute o comando a seguir para verificar a identidade da instância com o OpenSSL.
openssl smime -verify -in signature -inform PEM -content document -certfile cert.cer -noverify > /dev/nullSe a resposta for
Verification successful, a instância foi autenticada com sucesso.Os parâmetros do comando são descritos a seguir:
document: O arquivo que contém o documento de identidade obtido.-
signature: O arquivo que contém a assinatura de identidade obtida.NotaCaso tenha especificado um parâmetro audience ao obter a assinatura de identidade da instância, anexe manualmente esse parâmetro ao final do documento de identidade da instância. O formato é
,"audience":"your_audience_value". -
cert.cer: O arquivo que contém o certificado público da Alibaba Cloud.
Referências
Para obter outras informações da instância a partir da própria instância, consulte Metadados da instância.
Para executar scripts automaticamente na inicialização da instância usando dados de usuário, consulte Inicialização personalizada da instância.