# Получить идентификационный документ виртуальной машины

При создании виртуальной машины формируется [идентификационный документ](../../concepts/metadata/identity-document.md) (identity document), в котором хранятся сведения об этой ВМ: идентификаторы ВМ, продукта Marketplace, образа диска и т.д.

Чтобы запросить идентификационный документ:

1. Подключитесь к ВМ:

   ```bash
   ssh <IP-адрес_ВМ>
   ```

1. Выполните команду, чтобы получить идентификационный документ в [формате](../../concepts/vm-metadata.md#metadata-formats) Google Compute Engine:

   ```bash
   curl \
     --header Metadata-Flavor:Google 169.254.169.254/computeMetadata/v1/instance/vendor/identity/document
   ```

   Пример ответа:

   ```json
   {"instanceId":"fhmm5252k8vl********","productCodes":null,"imageId":"fd8evlqsgg4e********","productIds":["f2e3ia802lab********"],"createdAt":"2023-05-29T09:46:59Z","version":"2023-03-01"}
   ```

{% note info %}

Если ВМ была создана до 09.06.2023 и вы не можете получить идентификационный документ, остановите и снова запустите ВМ.

{% endnote %}

## Проверить подпись идентификационного документа {#check-id-signature}

[Сервис метаданных](../../concepts/vm-metadata.md) виртуальной машины кроме самого идентификационного документа предоставляет его криптографические подписи.

Вы можете использовать эти подписи для проверки происхождения, подлинности и целостности документа. Для этого:

{% list tabs %}

- RSA

  1. Подключитесь к ВМ:

     ```bash
     ssh <IP-адрес_ВМ>
     ```

  1. Получите RSA-подпись из метаданных ВМ и сохраните ее в файл `rsa2048`:

     ```bash
     curl \
       --header Metadata-Flavor:Google 169.254.169.254/computeMetadata/v1/instance/vendor/identity/rsa > rsa2048
     ```

  1. Создайте файл `certificate` и добавьте в него публичный сертификат:


     
     ```text
     -----BEGIN CERTIFICATE-----
     MIIDbTCCAlWgAwIBAgIUYxxDYt/4YKuabUadOe76BKPDm5IwDQYJKoZIhvcNAQEL
     BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
     GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAgFw0yNDA1MTcwNzMwMDJaGA8yMTI0
     MDQyMzA3MzAwMlowRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx
     ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcN
     AQEBBQADggEPADCCAQoCggEBAMN7SpdCijGFqhIxYJ/WH+JCOJ3EzTDxj9rcLZcj
     slurCfeAsaQcf1N7lrGA2qc93aGDYsQgRDiv8HjTnVXmORNv/wenK3xlRzbSVTF/
     GiKEDzcqKnG6SZEXs3iCq89Y3xO/SeuYSAbKN9nSWemdpYFqzEyvcgtu4fictU2/
     tDBKUY4viIJ475XtnHOqxHvVPnpmW8EXq6/B/X4UgTis1C9lOwmtBgo+dGugPKLK
     iHsNeYmJSfCQwUysNVdFRkEdMn6jPejhjLBQKbzo5xiDY3cERmC856MkaRpLUtJ+
     a4s8eQFNhOH37wdPjoCoE9WpTyPz3aMTwAOMOOJbj0eyFQsCAwEAAaNTMFEwHQYD
     VR0OBBYEFKm8P5NNXwS7TkDQykbbrSudXiUYMB8GA1UdIwQYMBaAFKm8P5NNXwS7
     TkDQykbbrSudXiUYMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEB
     ADXIYY3rpfj2EDAZKul3aobpMpnhPLyOb0Lsp1tJUwY2uvDlYMkd7dxZ6pXizmXx
     GFpuLLL6PLPgBEcQiISi+dK4uulc7oATk9A+frYEnsSP6tSdaQybVMAp7Uz3aZco
     hv5+ayA0u3oEoX49zKxaSCIppbqOZ5M8wA++zxVsFGSdMT43GglAeLb6oN1RaZMj
     V5rQsWXVXqa3owoFWGunVXslngp4kOJDP7cAdWz182n9x90reOQgi2EqC9UEMKfT
     e+LTayMRIXbZusHLz5hMFCB202bNLCZVvWJvouvseSbNMqAh1kB9FL+2u3OSYwXS
     w4iCV/tX2Ww47IMob6GD1TY=
     -----END CERTIFICATE-----
     ```



  1. Проверьте подпись и сохраните содержимое документа в файл `document`:

     ```bash
     openssl smime -verify -in rsa2048 -inform PEM -certfile certificate -noverify | tee document
     ```

     Если подпись верна, появится сообщение `Verification successful`.

- DSA

  1. Подключитесь к ВМ:

     ```bash
     ssh <IP-адрес_ВМ>
     ```

  1. Получите dsa2048-подпись из метаданных ВМ и сохраните ее в файл `dsa2048`:

     ```bash
     curl \
       --header Metadata-Flavor:Google 169.254.169.254/computeMetadata/v1/instance/vendor/identity/dsa > dsa2048
     ```

  1. Создайте файл `certificate` и сохраните в него публичный сертификат:


     
     ```text
     -----BEGIN CERTIFICATE-----
     MIIE0zCCBHmgAwIBAgIUN2CH+VDvBPp734rF72KOttCt57AwCwYJYIZIAWUDBAMC
     MEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ
     bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwIBcNMjQwNTE3MDcyODUyWhgPMjEyNDA0
     MjMwNzI4NTJaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
     HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggNIMIICOgYHKoZIzjgE
     ATCCAi0CggEBAO+gwmA1NySKpgiZVLm+dPN1R5JfBvrMhiPWnKm3TCHytb0lnFnb
     /t5rvmFCViVzCu2hp+qSBNMttmFUGX9vUJN7DA8VHQS+pN1/tkclCXTz5sqTkiI/
     uJKGFwWYJoHlHMywtPDsReIKLbnrvC5TuxfDNrU4aSxqEOoKOKlav6rL5g+0TEtl
     6z9b8J0Ww6G4q5Bz3aW6Zntv0Q49YssQqFDn93EhnF9rzFcyOl1eB73CrKYtKt1o
     bF1OEGhJNGF3Q782F7PoFKnK7GXpAuCqhZn3Ls5+n0RHcj84KB2HLTuTbht40A75
     OKP7u+Mrx4kOI/ECnUc3E1qbMqGBMuT0NPUCIQCdS0+A+Ma1nDghbhmtfrW/glsZ
     TT0JZEkwDTegv4YjJQKCAQEA1RfHWJDXwpAupFGYjOfRNlPqqpOk0wkeEPtQUllH
     cnyQ1r6JOot8qog6eHN7hS7A2EJTJU61FXMD2Hcb5gpgcPoPQehjAucMVX9ZrdTB
     52ESbeXtlqscllDgtiGM1+UDA15oVSUC9KXz3ub0M1gir3JwinHDPRbJfPhhXOH5
     X0egj52ueLwsct3779yHE1Qxz+eUeafjBVWIEn+wKQ8NaZLcewdXn9oL4FErYriW
     pf/BfomKyjRjJ/Axuqzf3XvfmCXD5NOqP9zu4GJOFr1sksowFbyFm8/lWo+Qv7uQ
     DhBNFA/ICOr6q8ejRXM6OO2YlHWfbUhIyBgRCoH2TDWfJAOCAQYAAoIBAQCcrqYv
     jkkrmi/anmoHHBGEqO+2Xld1DY5R9AXsNBUDxiThTzBIOPP67TJ3bHJbkwEMSZqx
     Q3Ubde8HaSgmo1CIvMobRgL2Q3YC2tY7ybH7zotWMOPX+p+lC5QmsBxkQ6M/ea3r
     Jfpe7pEUlBMTWS2BvozDooAL6cruP4NqTyw9Dq0pox7Lg3zxeFrHmtG4wgOSKyLg
     XFtKOSlmTeEAT8fG2Xb/MZnQHWFcoUh37sFrbRIW1ydYdKBRua25laMca9ExHSss
     UVf2d7rB4USymcDLGWdLEjO0jMFRTY8M5Ig8uENEfRMD/klMvDg1ZeK5Ze9fMh+l
     IM4c57p977EPoDRGo1MwUTAdBgNVHQ4EFgQUeL8k82WV59MQtuitLyLnFifDcdkw
     HwYDVR0jBBgwFoAUeL8k82WV59MQtuitLyLnFifDcdkwDwYDVR0TAQH/BAUwAwEB
     /zALBglghkgBZQMEAwIDRwAwRAIgdeGjw97PE5ok2YYomfaEiqeX4E1nbwZyZcTV
     2g707loCIGQGeeHSKxWghybC/fAzultcLVNKvjBllZeBadCSDvtG
     -----END CERTIFICATE-----
     ```


  1. Проверьте подпись и сохраните содержимое документа в файл `document`:

     ```bash
     openssl smime -verify -in dsa2048 -inform PEM -certfile certificate -noverify | tee document
     ```

     Если подпись верна, появится сообщение `Verification successful`.

- Base64

  1. Подключитесь к ВМ:

     ```bash
     ssh <IP-адрес_ВМ>
     ```

  1. Получите base64-подпись из метаданных ВМ и сохраните ее в файл `signature`:

     ```bash
     curl \
       --header Metadata-Flavor:Google 169.254.169.254/computeMetadata/v1/instance/vendor/identity/base64 | \
         base64 -d > signature
     ```

  1. Получите идентификационный документ и сохраните его в файл `document`:

     ```bash
     curl \
       --header Metadata-Flavor:Google 169.254.169.254/computeMetadata/v1/instance/vendor/identity/document > document
     ```

  1. Создайте файл `certificate` и сохраните в него публичный сертификат:

     ```text
     -----BEGIN CERTIFICATE-----
     MIIC4TCCAcmgAwIBAgIUP0zcGO1MeRwze8VdSMEt/OdBXoIwDQYJKoZIhvcNAQEL
     BQAwADAeFw0yMzA2MDcwNjU4MTBaFw0zMzA2MDQwNjU4MTBaMAAwggEiMA0GCSqG
     SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDw6TvAvrbJvY4tzIIuDnLEVfRUW4BZJD3y
     K8fyyxXrYDvC69RKCKk9+TQhnUOLhZNlDST4HFfSPlakOjXUduyJE5M1EmoLAstN
     81aP3TejseDavxmaNijXRsa9E731T5H+zo44PgAHfQJmiD7rtcr+QOIosKUB2dwp
     F2acp9hLKd389BfNctziG0Oxq7hlISTDBnhzBg7eKuqWtShjVW5RqQvp3bARfUPa
     RWdYjmZvR+AnmozV1SGnpAnatzhnF6tNAb5XSEw49tumsX1D4A11J6mtrafO6bsP
     wdIPwy9W15iCszUNlFcdBaZhESc34VbyCyLMvA5T0Uj1FJHz1RFlAgMBAAGjUzBR
     MB0GA1UdDgQWBBQq0z6Vcmjcn8wnRTwKGSm5YGas9TAfBgNVHSMEGDAWgBQq0z6V
     cmjcn8wnRTwKGSm5YGas9TAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUA
     A4IBAQBplippQ/Pxn7AkuwOTSwSTeJ7S+rMSb6iSL9chNHetanft0Ikr5BDsSrd6
     TeHV0sEMilDIjX0EjSNHwYtYrDPk6cGjkzDTYb6/U10c5Xhwi0g7/lMH/RPihPz5
     co80VEqXWlgfgHuE7/cAiTJ61PiFD9oI494bQcIISQNDfbUUiYfn32+8nK20rn8C
     w7PbGoIv6zz6A0c6DJT7yXJF5sAHgX4M03Oi9edzQ077ZOboXSuUKe4VfHIpjTjZ
     0sM/NbG5BFstyetVc3FZOGWGukTRb0C0GSASOm6hCyh5ctmpwlS4menc/OAx9BYO
     r9ZBjEa0oLFVV0pP5Tj4Gf1DDpuJ
     -----END CERTIFICATE-----
     ```

  1. Извлеките из сертификата публичный ключ и сохраните его в файл `key`:

     ```bash
     openssl x509 -pubkey -noout -in certificate > key
     ```

  1. Проверьте подпись и сохраните содержимое документа в файл `document`:

     ```bash
     openssl dgst -sha256 -verify key -signature signature document
     ```

     Если подпись верна, появится сообщение `Verified OK`.

{% endlist %}

Сопоставьте идентификационный документ из метаданных ВМ с документом, сохраненным в файле:

```bash
curl http://169.254.169.254/latest/vendor/instance-identity/document | \
openssl dgst -sha256
```

```bash
openssl dgst -sha256 < document
```

Если хеш совпадает, идентификационный документ, сохраненный в файле, соответствует документу в метаданных ВМ.