インスタンスアイデンティティは、インスタンス ID ドキュメントとインスタンス ID 署名で構成されます。インスタンスアイデンティティを使用して Elastic Compute Service (ECS) インスタンスを識別および区別することで、アプリケーションのアクセス制御やソフトウェアのアクティベーションにおける信頼の基盤を確立できます。このトピックでは、インスタンスアイデンティティの概要、一般的な利用シーン、およびその取得方法と使用方法について説明します。
インスタンスアイデンティティとは
インスタンスアイデンティティは、動的に生成されるインスタンス ID ドキュメント (ドキュメント) とインスタンス ID 署名 (署名) で構成されます。
インスタンス ID ドキュメント
インスタンス ID ドキュメントには、インスタンス ID や IP アドレスなど、インスタンスの ID 情報が含まれています。次の表に、ドキュメントに含まれるプロパティを示します。
プロパティ
説明
owner-account-id
インスタンスが属する Alibaba Cloud アカウントの ID。
instance-id
インスタンスの ID。
mac
インスタンスのプライマリネットワークインターフェイスカード (NIC) の MAC アドレス。
region-id
インスタンスが配置されているリージョンの ID。
serial-number
インスタンスのシリアル番号。
zone-id
インスタンスが配置されているゾーンの ID。
instance-type
インスタンスタイプ。
image-id
インスタンスが使用するイメージの ID。
private-ipv4
インスタンスのプライベート IPv4 アドレス。
インスタンス ID 署名
第三者は、インスタンス ID 署名を使用して、インスタンス ID ドキュメントの信頼性と内容を検証できます。署名は PKCS#7 形式で暗号化されており、完全にデジタル化され、安全で信頼性があります。
インスタンス ID 署名の
audienceパラメーターを使用すると、署名のなりすましを防ぐことができます。audienceパラメーターの値には、ランダムな文字列、タイムスタンプ、定期的に変更される情報、またはアルゴリズムによって生成されたデータを指定できます。audienceパラメーターを設定すると、権限のない第三者が ID ドキュメントと署名に関する部分的な情報を取得したとしても、audienceパラメーターの値を推測することはできません。また、audienceパラメーターを使用して認証を実行することもできます。詳細については、「インスタンスアイデンティティの使用」をご参照ください。
利用シーン
インスタンスアイデンティティは、以下のシナリオで認証、権限付与、または環境識別に利用できます。
オフラインソフトウェアは通常、使い捨てのライセンスコードでアクティベーションされます。このモデルは、使用パターンが変動するクラウドソフトウェアには適していません。Alibaba Cloud Marketplace でアプリケーションを公開する場合、インスタンスアイデンティティを使用して柔軟なユーザー権限付与が可能です。
ECS インスタンスに機密データを書き込む際、インスタンスアイデンティティを使用することで、データが別の環境ではなく、対象の ECS インスタンスに書き込まれることを保証できます。
その他、ターゲットサーバーのソースを確認する必要があるシナリオ。
インスタンス ID ドキュメントまたは署名の取得
(推奨) セキュリティ強化モードでの取得
Linux インスタンス
# サーバーアクセス認証情報を取得します。有効期間を設定します。X-Forwarded-For ヘッダーは含めません。 TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:<サーバーアクセス認証情報の有効期間>"` # インスタンスアイデンティティを取得します。 curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/<dynamic data>Windows インスタンス
# サーバーアクセス認証情報を取得します。有効期間を設定します。X-Forwarded-For ヘッダーは含めません。 $token = Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "<サーバーアクセス認証情報の有効期間>"} -Method PUT -Uri http://100.100.100.200/latest/api/token # インスタンスアイデンティティを取得します。 Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token" = $token} -Method GET -Uri http://100.100.100.200/latest/<dynamic data><サーバーアクセス認証情報の有効期間>:アクセス認証情報は、データセキュリティを向上させるための認証に使用されます。有効期間は 1~21,600 秒の範囲で設定できます。有効期間内であれば、コマンドを再利用してデータを取得できます。認証情報が期限切れになった場合は、新しい認証情報を取得する必要があります。
アクセス認証情報は 1 つのインスタンスに対してのみ有効です。認証情報を別のインスタンスにコピーした場合、アクセスは拒否されます。
<dynamic data>:このプレースホルダーを、特定のインスタンス ID ドキュメントまたは署名に置き換えます。インスタンス ID ドキュメント: dynamic/instance-identity/document
インスタンス ID 署名: dynamic/instance-identity/pkcs7?audience=XXXX
重要?audience=XXXXはオプションです。詳細については、「インスタンス 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>:このプレースホルダーを、特定のインスタンス ID ドキュメントまたは署名に置き換えます。インスタンス ID ドキュメント: dynamic/instance-identity/document
インスタンス ID 署名: dynamic/instance-identity/pkcs7?audience=XXXX
重要?audience=XXXXはオプションです。詳細については、「インスタンス ID 署名」をご参照ください。
インスタンスアイデンティティの使用
以下の手順では、セキュリティ強化モードでインスタンスアイデンティティを使用する方法を説明します。例として Alibaba Cloud Linux 3 システムを使用します。
インスタンスアイデンティティの認証と使用には、セキュリティを確保するために OpenSSL が必要です。ご利用のインスタンスに OpenSSL がインストールされていない場合は、OpenSSL 公式ウェブサイト にアクセスしてダウンロードし、インストールしてください。
Linux インスタンスにリモートで接続します。
詳細については、「Workbench を使用して Linux インスタンスにログインする」をご参照ください。
(オプション) 次のコマンドを実行して、インスタンス ID ドキュメントと署名を表示できます。
# サーバーアクセス認証情報を取得し、有効期間を 3600 秒に設定します。 TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:3600"` # インスタンス ID ドキュメントを取得します。 curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/dynamic/instance-identity/document # インスタンス ID 署名を取得します。 curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/dynamic/instance-identity/pkcs7
インスタンス ID ドキュメント、インスタンス ID 署名、および Alibaba Cloud 公開証明書をファイルに保存します。
次のコマンドを実行して、インスタンス ID ドキュメントを `document` ファイルに保存します。
curl 100.100.100.200/latest/dynamic/instance-identity/document > document次のコマンドを実行して、インスタンス ID 署名を `signature` ファイルに保存します。
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 を使用してインスタンスアイデンティティを検証します。
openssl smime -verify -in signature -inform PEM -content document -certfile cert.cer -noverify > /dev/nullVerification successfulが返された場合、インスタンスアイデンティティが検証されたことを示します。コマンドのパラメーターは次のとおりです。
document: 取得したインスタンス ID ドキュメントの内容を含むファイル。
signature: 取得したインスタンス ID 署名の内容を含むファイル。
説明インスタンス ID 署名を取得する際に `audience` パラメーターを指定した場合は、インスタンス ID ドキュメントの末尾に手動でパラメーターを追加する必要があります。フォーマットは `"audience":""` です。カンマ (,) を使用して `audience` パラメーターを他のパラメーターと区切ります。
cert.cer: Alibaba Cloud 公開証明書を含むファイル。
関連ドキュメント
インスタンスメタデータを使用してインスタンス内から他のインスタンス情報を取得する方法の詳細については、「インスタンスメタデータ」をご参照ください。
インスタンスの起動時にインスタンスのユーザーデータを使用してコマンドやスクリプトを自動的に実行する方法の詳細については、「カスタムインスタンスの初期化設定」をご参照ください。