このトピックでは、インスタンス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をダウンロードしてインストールします。
Linuxインスタンスに接続します。
詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。
次のコマンドを実行して、インスタンスIDドキュメントを取得します。
curl http:// 100.100.100.200/latest/dynamic/instance-identity/document
次のいずれかの方法を使用して、インスタンス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
次のコマンドを実行して、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パブリック証明書に設定します。
インスタンスIDの使用
例1: audienceパラメーターを指定せずにインスタンスIDを使用する
この例では、アプリケーションソフトウェアの販売者としてAlibaba Cloud Marketplaceイメージを使用するインスタンスのIDを使用する方法を示します。
Linuxインスタンスに接続します。
詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。
次のコマンドを実行して、インスタンスで使用されるイメージが 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
現在のディレクトリに
cert.cer
という名前の一時ファイルを作成し、Alibaba Cloudパブリック証明書をファイルに保存します。インスタンス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
検証成功
が返された場合、インスタンスIDが検証され、アプリケーションソフトウェアを管理する権限があります。
例2: audienceパラメーターを指定したインスタンスIDの使用
この例では、アプリケーションソフトウェアの販売者としてAlibaba Cloud Marketplaceイメージを使用するインスタンスのIDを使用する方法も示します。 audience
パラメーターを指定してインスタンスを識別し、アプリケーションサーバーでポリシー制御を実装して、認証されたユーザーがソフトウェアを使用できるようにすることができます。 これにより、ライセンスコードを不正使用から保護することができる。
Linuxインスタンスに接続します。
詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。
次のコマンドを実行して、インスタンスで使用されるイメージが 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
現在のディレクトリに
cert.cer
という名前の一時ファイルを作成し、Alibaba Cloudパブリック証明書をファイルに保存します。インスタンス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
検証成功
が返された場合、インスタンスIDが検証され、アプリケーションソフトウェアを管理する権限があります。