インスタンスIDは、インスタンスIDドキュメントとインスタンスID署名で構成されます。 インスタンスIDは、Elastic Compute Service (ECS) インスタンスを迅速に識別および区別するために使用されます。 インスタンスIDは、アプリケーションの権限を管理し、ソフトウェアをアクティブ化するための信頼基盤を提供します。 このトピックでは、インスタンスIDの定義とシナリオ、およびインスタンスIDの取得と使用方法について説明します。
インスタンスID
インスタンスIDは、インスタンスIDドキュメント (document) とインスタンスID署名 (signature) で構成されます。
インスタンスIDドキュメント
インスタンスIDドキュメントは、インスタンスの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署名は、インスタンスIDドキュメントの信頼性と内容を検証するためにサードパーティによって使用されます。 インスタンスID署名は、PKCS #7標準を使用して暗号化される安全で信頼性の高いデジタル署名です。
インスタンスID署名に
audience
パラメーターを設定して、署名がスプーフィングされないようにすることができます。オーディエンス
パラメータの値は、ランダムな文字列、タイムスタンプ、定期的に変化する情報、またはアルゴリズムによって生成されたデータです。 インスタンスID署名にaudience
パラメーターを設定すると、インスタンスIDドキュメントと署名に関する情報を取得しても、audience
パラメーターの値を取得できません。audience
パラメーターを使用して認証を実行できます。 詳細については、このトピックの「インスタンスIDの使用」をご参照ください。
シナリオ
次のシナリオでは、認証、承認、またはランタイム環境の識別にインスタンスIDを使用できます。
ほとんどの場合、クラウド外のソフトウェアは、単一のライセンスコードを使用してアクティブ化されます。 この方法は、さまざまな時点やさまざまなシナリオで使用されるクラウドベースのソフトウェアには適していません。 でアプリケーションソフトウェアを公開するときに、インスタンスIDをユーザー認証に使用できます。 Alibaba Cloud Marketplace
機密データをECSインスタンスに書き込むときは、インスタンスIDを使用して、使用するインスタンスに機密データを書き込むことができます。
インスタンスのソースを確認するシナリオ。
インスタンスIDドキュメントまたは署名の取得
(推奨) セキュリティ強化モードでインスタンスIDドキュメントまたは署名を取得
Linuxインスタンス
# Obtain server access credentials. Specify a validity period for the credentials and make sure that the request to create a token does 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:<Validity period of the server access credentials>"' # Obtain the instance identity. curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/<dynamic data>
Windowsインスタンス
# Obtain server access credentials. Specify a validity period for the credentials and make sure that the request to create a token does not include the X-Forwarded-For header. $token = Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "<Validity period of the server access credentials>"} -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>
<サーバーアクセス資格情報の有効期間>
: サーバーアクセス資格情報の有効期間を指定します。 有効な値: 1 ~ 21600 単位は秒です。 アクセス証明書は、データセキュリティを強化するための認証に使用される。有効期間内に、上記のコマンドを繰り返し実行してインスタンスIDを取得できます。 有効期間が終了したら、インスタンスIDを要求する前に新しい資格情報を取得する必要があります。
アクセス資格情報は1つのインスタンスにのみ適用されます。 資格情報をコピーして別のインスタンスのIDを取得すると、リクエストは拒否されます。
<dynamic data>
: このパラメーターを次のいずれかの値に置き換えます。dynamic/instance-identity/document: インスタンス識別ドキュメントを指定します。
dynamic/instance-identity/pkcs7?audience=XXXX: インスタンスID署名を指定します。
重要? オーディエンス=XXXX
パラメーターはオプションです。 詳細については、このトピックの「インスタンスID署名」セクションをご参照ください。
通常モードでインスタンスIDドキュメントまたは署名を取得
Linuxインスタンス
curl http://100.100.100.200/latest/<dynamic data>
Windowsインスタンス (PowerShell)
Invoke-RestMethod http://100.100.100.200/latest/<dynamic data>
<dynamic data>
: このパラメーターを次のいずれかの値に置き換えます。dynamic/instance-identity/document: インスタンス識別ドキュメントを指定します。
dynamic/instance-identity/pkcs7?audience=XXXX: インスタンスID署名を指定します。
重要? オーディエンス=XXXX
パラメーターはオプションです。 詳細については、このトピックの「インスタンスID署名」セクションをご参照ください。
インスタンスIDの使用
手順
このセクションでは、セキュリティ強化モードでインスタンスIDを使用する方法について説明します。 この例では、Alibaba Cloud Linux 3を実行するインスタンスが使用されています。
OpenSSLは、セキュリティを確保するためにインスタンスIDを検証して使用する必要があります。 OpenSSLを設定しなかった場合は、公式OpenSSL Webサイトにアクセスして、OpenSSLをダウンロードしてインストールしてください。
Linuxインスタンスに接続します。
詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。
(オプション) 次のコマンドを実行して、インスタンスIDドキュメントと署名を取得します。
# Obtain server access credentials. Set the validity period of the credentials to 3,600 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/pkcs7
インスタンスIDドキュメント、インスタンスID署名、Alibaba Cloudパブリック証明書をファイルに保存します。
次のコマンドを実行して、インスタンスIDドキュメント情報をドキュメントファイルに保存します。
curl 100.100.100.200/latest/dynamic/instance-identity/document > document
次のコマンドを実行して、インスタンスID署名を署名ファイルに保存します。
echo "-----BEGIN CERTIFICATE-----" > signature curl 100.100.100.200/latest/dynamic/instance-identity/pkcs7 >> signature echo "" >> signature echo "-----END CERTIFICATE-----" >> signature
次のコマンドを実行して、Alibaba Cloudパブリック証明書を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
次のコマンドを実行して、OpenSSLを使用してインスタンスIDを検証します。
openssl smime -verify -in signature -inform PEM -content document -certfile cert.cer -noverify > /dev/null
検証成功
が返された場合、インスタンスIDが検証されます。上記のコマンドの次のパラメーターに注意してください。
document: このパラメーターを、取得したインスタンスIDドキュメントを含むファイルに設定します。
signature: このパラメーターを、取得したインスタンスID署名を含むファイルに設定します。
説明インスタンスID署名でaudienceパラメーターを設定した場合は、インスタンスIDドキュメントの末尾に "audience":"<Values of audience>" 形式でパラメーターを追加します。 audienceパラメーターには複数の値を指定できます。 値はコンマ (,) で区切ります。
cert.cer: このパラメーターを、Alibaba Cloudパブリック証明書を含むファイルに設定します。
例1: audienceパラメーターを設定せずにインスタンスIDを使用する
この例では、Alibaba Cloud Marketplaceイメージをアプリケーションソフトウェアベンダーとして使用するインスタンスのIDを使用する方法を示します。
Linuxインスタンスに接続します。
詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。
次のコマンドを実行して、メタデータサービスを使用して、Linuxインスタンスで使用されるイメージの製品コード (
product-code
) と課金方法 (charge-type
) を取得し、イメージが Alibaba Cloud Marketplace詳細については、「インスタンスメタデータの取得」をご参照ください。
curl http://100.100.100.200/latest/meta-data/image/market-place/product-code curl http://100.100.100.200/latest/meta-data/image/market-place/charge-type
現在のディレクトリに
cert.cer
という名前の一時ファイルを作成し、Alibaba Cloudパブリック証明書をファイルに保存します。インスタンスIDを検証します。
スクリプト例:
#!/usr/bin/bash function verify_signature_without_audience(){ curl 100.100.100.200/latest/dynamic/instance-identity/document > document echo "-----BEGIN CERTIFICATE-----" > signature curl 100.100.100.200/latest/dynamic/instance-identity/pkcs7 >> signature echo "" >> signature echo "-----END CERTIFICATE-----" >> signature openssl smime -verify -in signature -inform PEM -content document -certfile cert.cer -noverify > /dev/null } verify_signature_without_audience
検証成功
が返された場合、インスタンスIDが検証され、アプリケーションソフトウェアを管理する権限が付与されます。
例2: audienceパラメーターが設定されているインスタンスIDを使用する
この例では、Alibaba Cloud Marketplaceイメージをアプリケーションソフトウェアベンダーとして使用するインスタンスのIDを使用する方法を示します。 audience
パラメーターを設定してインスタンスを識別し、アプリケーションサーバーにポリシー制御を実装できます。 これにより、認証ユーザーはソフトウェアを使用でき、ライセンスコードを不正使用から保護できます。
Linuxインスタンスに接続します。
詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。
次のコマンドを実行して、メタデータサービスを使用して、Linuxインスタンスで使用されるイメージの製品コード (
product-code
) と課金方法 (charge-type
) を取得し、イメージが Alibaba Cloud Marketplace詳細については、「インスタンスメタデータの取得」をご参照ください。
curl http://100.100.100.200/latest/meta-data/image/market-place/product-code curl http://100.100.100.200/latest/meta-data/image/market-place/charge-type
現在のディレクトリに
cert.cer
という名前の一時ファイルを作成し、Alibaba Cloudパブリック証明書をファイルに保存します。インスタンスIDを検証します。
スクリプト例:
#!/usr/bin/bash function verify_signature_with_specified_audience(){ audience='your audience' #Configure the audience parameter. document=$(curl 100.100.100.200/latest/dynamic/instance-identity/document) audience_json=',"audience":''"'${audience}'"}' echo -n ${document%?}${audience_json} > document echo "-----BEGIN CERTIFICATE-----" > signature curl 100.100.100.200/latest/dynamic/instance-identity/pkcs7?audience=${audience} >> signature echo "" >> signature echo "-----END CERTIFICATE-----" >> signature openssl smime -verify -in signature -inform PEM -content document -certfile cert.cer -noverify > /dev/null } verify_signature_with_specified_audience
検証成功
が返された場合、インスタンスIDが検証され、アプリケーションソフトウェアを管理する権限が付与されます。
関連ドキュメント
インスタンスメタデータからインスタンス情報を取得する方法については、「インスタンスメタデータの取得」をご参照ください。
インスタンスユーザーデータを使用してインスタンスの起動時にコマンドまたはスクリプトを自動的に実行する方法については、「インスタンスユーザーデータ」をご参照ください。