すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:インスタンスIDの使用

最終更新日:Dec 28, 2023

このトピックでは、インスタンスIDとインスタンスIDの使用方法について説明します。 このトピックでは、カスタムパラメーターの有無にかかわらずインスタンスIDを使用する方法の例も提供します。

背景情報

インスタンスID

インスタンスIDは、インスタンスを識別および区別するために使用できるインスタンスメタデータの一部であり、アプリケーションの権限を管理し、ソフトウェアをアクティブ化するための基礎を提供します。 インスタンスIDはリアルタイムで生成され、インスタンス情報とともに動的に変更されます。

各インスタンスIDは、インスタンスIDドキュメント (document) とインスタンスID署名 (signature) で構成されます。

  • インスタンスIDドキュメント

    インスタンスIDドキュメントには、次の表で説明するインスタンス情報が含まれます。

    項目

    説明

    account-id

    インスタンスが属するAlibaba CloudアカウントのID。

    instance-id

    インスタンス ID 。

    mac

    インスタンスのプライマリelastic network interface (ENI) のメディアアクセス制御 (MAC) アドレス。

    region-id

    インスタンスのリージョン ID です。

    serial-number

    インスタンスのシリアル番号。

    zone-id

    インスタンスのゾーン ID です。

    instance-type

    インスタンスタイプです。

    image-id

    インスタンスによって使用されるイメージのID。

    private-ip

    インスタンスのプライベート IP アドレス。

  • インスタンスID署名

    インスタンスID署名は、PKCS #7標準を使用して暗号化された安全で信頼性の高いデジタル署名です。

    インスタンスID署名にaudienceパラメーターを指定して、署名のスプーフィングを防ぐことができます。 オーディエンスの値は、ランダムな文字列、タイムスタンプ、定期的に変化するデータ、または特定のアルゴリズムによって生成されたデータです。 インスタンスID署名でaudienceパラメーターを指定した後、他のユーザーがインスタンスIDドキュメントとインスタンスID署名に関する情報を取得しても、audienceの値を推測することは困難です。 認証にはaudienceパラメーターを使用できます。 詳細については、「例2: audienceパラメーターを指定したインスタンスIDの使用」をご参照ください。

シナリオ

次のシナリオでは、ランタイム環境の認証、承認、または識別にインスタンスID (instance-identity) を使用できます。

  • 従来、クラウド外の各ソフトウェアは、単一のライセンスコードを使用してアクティブ化されていました。 この方法は、さまざまな時点やさまざまなシナリオで使用されるクラウドベースのソフトウェアには適していません。 でアプリケーションソフトウェアを公開するときに、インスタンスIDをユーザー認証に使用できます。 Alibaba Cloud Marketplace 詳細については、「インスタンスIDの使用」をご参照ください。

  • 機密データをインスタンスに書き込むときは、インスタンスIDを使用して、使用するインスタンスに機密データを書き込むことができます。

  • インスタンスのソースを確認するシナリオ。

インスタンスIDの設定

このセクションでは、インスタンスIDを設定する方法について説明します。 この例では、CentOS 7.4を実行するインスタンスが使用されます。

説明

OpenSSLは、セキュリティを確保するためにインスタンスIDを検証して使用する必要があります。 OpenSSLを設定していない場合は、OpenSSL公式Webサイトにアクセスして、OpenSSLをダウンロードしてインストールします。

  1. Linuxインスタンスに接続します。

    詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。

  2. 次のコマンドを実行して、インスタンスIDドキュメントを取得します。

    curl http:// 100.100.100.200/latest/dynamic/instance-identity/document
  3. 次のいずれかの方法を使用して、インスタンスID署名を取得します。

    • audienceパラメーターなしで次のコマンドを実行します。

      curl http:// 100.100.100.200/latest/dynamic/instance-identity/pkcs7
    • audienceパラメーターを指定して次のコマンドを実行します。

      curl http:// 100.100.100.200/latest/dynamic/instance-identity/pkcs7?audience=XXXX
      説明

      上記のコマンドで、XXXXを実際の値に置き換えます。 例: audience=test

  4. 次のコマンドを実行して、OpenSSLを使用してインスタンスIDを検証します。

    openssl smime -verify -in $signature -inform PEM -content $DOCUMENT -certfile AliyunPubkey-novery> /dev/null

    上記のコマンドの次のパラメーターに注意してください。

    • $signature: このパラメーターを、取得したインスタンスID署名に設定します。

    • $DOCUMENT: このパラメーターを、取得したインスタンスIDドキュメントに設定します。

      説明

      前の手順でaudienceパラメーターを指定した場合は、"audience":"<Value of audience>" 形式のパラメーターをインスタンスIDドキュメントの末尾に追加します。 複数のオーディエンスパラメーターを追加し、パラメーターをコンマ (,) で区切ることができます。

    • AliyunPubkey: このパラメーターをAlibaba Cloudパブリック証明書に設定します。

      次のコードは、Alibaba Cloudパブリック証明書を示しています。

      ----- 認証を開始 -----
      MIIDdzCCAl gAwIBAgIEZmbRhzANBgkqhkiG9w0BAQsFADBsMRAwDgYDVQQGEwdV
      bmtub3duMRAwDgYDVQQIEwdVbmtub3duMRAwDgYDVQQHEwdVbmtub3duMRAwDgYD
      VQQKEwdVbmtub3duMRAwDgYDVQQLEwdVbmtub3duMRAwDgYDVQQDEwdVbmtub3du
      MB4XDTE4MDIyMzAxMjkzOFoXDTM4MDIxODAxMjkzOFowbDEQMA4GA1UEBhMHVW5r
      bm93bjEQMA4GA1UECBMHVW5rbm93bjEQMA4GA1UEBxMHVW5rbm93bjEQMA4GA1UE
      ChMHVW5rbm93bjEQMA4GA1UECxMHVW5rbm93bjEQMA4GA1UEAxMHVW5rbm93bjCC
      ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIJwy5sbZDiNyX4mvdP32pqM
      YMK4k7 5lRnVR 2Fky/5uwyGSPbddNXaXzwEm u4wIsJiaAN3OZgJpYIoCGik 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
      ----- 証明書を終了 ----- 

インスタンスIDの使用

例1: audienceパラメーターを指定せずにインスタンスIDを使用する

この例では、アプリケーションソフトウェアの販売者としてAlibaba Cloud Marketplaceイメージを使用するインスタンスのIDを使用する方法を示します。

  1. Linuxインスタンスに接続します。

    詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。

  2. 次のコマンドを実行して、インスタンスで使用されるイメージが Alibaba Cloud Marketplace

    インスタンスのメタデータでproduct-codeおよびcharge-type項目を確認できます。 プロダクトコード項目は、Alibaba Cloud Marketplaceイメージのプロダクトコードを示します。 課金タイプの項目は、Alibaba Cloud Marketplaceイメージの課金方法を示します。 詳細については、「ECSインスタンスメタデータの概要」をご参照ください。

    curl http:// 100.100.100.200/latest/meta-data/image/market-place/product-code
    curl http:// 100.100.100.200 /最新 /メタデータ /画像 /market-place/charge-type 
  3. 現在のディレクトリにcert.cerという名前の一時ファイルを作成し、Alibaba Cloudパブリック証明書をファイルに保存します。

  4. インスタンスIDを検証します。

    スクリプトの例:

    #!/usr/bin/bash
    関数verify_signature_without_audience(){
    curl 100.100.100.200/latest/dynamic/instance-identity/document> ドキュメント
    エコー "----- 認証を開始 -----"> 署名
    curl 100.100.100.200/latest/dynamic/instance-identity/pkcs7 >> 署名
    echo ""> 署名
    エコー "----- END CERTIFICATE -----"> 署名
    openssl smime -verify -in signature -inform PEM -content document -certfile cert.cer-novery> /dev/null
    }
    verify_signature_without_audience 
  5. 検証成功が返された場合、インスタンスIDが検証され、アプリケーションソフトウェアを管理する権限があります。

例2: audienceパラメーターを指定したインスタンスIDの使用

この例では、アプリケーションソフトウェアの販売者としてAlibaba Cloud Marketplaceイメージを使用するインスタンスのIDを使用する方法も示します。 audienceパラメーターを指定してインスタンスを識別し、アプリケーションサーバーでポリシー制御を実装して、認証されたユーザーがソフトウェアを使用できるようにすることができます。 これにより、ライセンスコードを不正使用から保護することができる。

  1. Linuxインスタンスに接続します。

    詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。

  2. 次のコマンドを実行して、インスタンスで使用されるイメージが Alibaba Cloud Marketplace

    インスタンスのメタデータでproduct-codeおよびcharge-type項目を確認できます。 プロダクトコード項目は、Alibaba Cloud Marketplaceイメージのプロダクトコードを示します。 課金タイプの項目は、Alibaba Cloud Marketplaceイメージの課金方法を示します。 詳細については、「ECSインスタンスメタデータの概要」をご参照ください。

    curl http:// 100.100.100.200/latest/meta-data/image/market-place/product-code
    curl http:// 100.100.100.200 /最新 /メタデータ /画像 /market-place/charge-type 
  3. 現在のディレクトリにcert.cerという名前の一時ファイルを作成し、Alibaba Cloudパブリック証明書をファイルに保存します。

  4. インスタンスIDを検証します。

    スクリプトの例:

    #!/usr/bin/bash
    function verify_signature_with_specified_audience(){
    audience='your audience'# audienceパラメーターを指定します。
    document=$(curl 100.100.100.200/latest/dynamic/instance-identity/document)
    audience_json=',"audience":''"'${audience}'"}'
    echo -n ${document %?}${ audience_json} > ドキュメント
    エコー "----- 認証を開始 -----"> 署名
    curl 100.100.100.200 /最新 /動的 /インスタンスID /pkcs7?audience =${ audience} >> 署名
    echo ""> 署名
    エコー "----- END CERTIFICATE -----"> 署名
    openssl smime -verify -in signature -inform PEM -content document -certfile cert.cer-novery> /dev/null
    }
    verify_signature_with_specified_audience 
  5. 検証成功が返された場合、インスタンスIDが検証され、アプリケーションソフトウェアを管理する権限があります。