Metadata v2 を使用する
    • PDF

    Metadata v2 を使用する

    • PDF

    記事の要約

    VPC環境で利用できます。

    概要

    Metadata v1の SSRF脆弱性を補うために、Metadata v2方式の呼び出し方式を使用できます。

    • Metadata v1 - リクエスト/レスポンス方式
    • Metadata v2 - セッション指向方式

    サーバインスタンスの設定によって v1、v2方式をすべて使用するか、v2方式のみを使用するように変更できます。

    Metadata v1 のセキュリティ脆弱性

    Metada v1方式を使用可能なサーバインスタンスでサービスを運用したり、ソフトウェアを駆動する場合、
    meta data(serverorrole data)の露出を防ぐための追加措置や注意が必要になることがあります。
    もし運用中のサービスに SSRF脆弱性が存在し、これを認知していない場合、外部からサーバインスタンスの Metadata APIを呼び出して
    meta dataを取得できます。
    このようなセキュリティ脆弱性をブロックするためには、サーバインスタンスの Metadataバージョン設定を v2のみ使用できるように変更する必要があります。
    Metadata v2方式は PUTメソッドを通じてトークンを発行し、Metadata API呼び出しに対してトークン認証を行い、
    SSRF脆弱性による meta dataの露出を保護できます。

    サーバインスタンスの Metadataバージョン設定

    サーバインスタンス作成後、コンソールによる設定変更のみ可能です。

    1. サーバコンソールへアクセス [Services > Compute > Server]
    2. [サーバ管理および設定変更 > Metadata API管理] メニューを通じてバージョンを選択
    • v1および v2
      • v1、v2バージョンすべて使用可能
      • Metadata API呼び出し時、トークンヘッダ伝達有無によって v1、v2方式を区分
      • トークンヘッダを入力しない場合、認証手続きなしでリクエストを実行
      • トークンヘッダ入力時に伝達されたヘッダ値の認証を含めてリクエストを実行
    • v2(トークン必須)
      • v2バージョンのみ使用可能
      • Metadata API呼び出し時にトークンヘッダ値を必ず入力

    • Header
      • X-NCP-METADATA-TOKEN-TTL-SECONDS: トークン発行時のセッション期間(秒)を設定するためのヘッダ(1~21600秒)
      • X-NCP-METADATA-TOKEN: Metadata API呼び出し時に発行されたトークンを伝達するためのヘッダ

    別途コマンド

    [roor@test-server ~]# TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-NCP-METADATA-TOKEN-TTL-SECONDS: 21600"`
    
    [root@test-server ~]# curl -H "X-NCP-METADATA-TOKEN: $TOKEN" http://169.254.169.254/latest/meta-data
    

    結合コマンド

    [root@test-server ~]# TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-NCP-METADATA-TOKEN-TTL-SECONDS: 21600"` \
    && curl -H "X-NCP-METADATA-TOKEN: $TOKEN" http://169.254.169.254/latest/meta-data
    


    参考
    トークンが正常に発行されていない場合、エラーメッセージが変数に保存されることがあります。
    この場合、Metadata API呼び出しが正常に動作しません。

    認証のエラーレスポンス

    [root@test-server ~]# curl -H "X-NCP-METADATA-TOKEN: wrong-token" -i http://169.254.169.254/latest/meta-data
    HTTP/1.1 401 401
    Date: Tue, 11 Apr 2023 02:42:02 GMT
    Server: Apache
    Referrer-Policy: unsafe-url
    Connection: close
    Transfer-Encoding: chunked
    Content-Type: text/plain;charset=UTF-8
    
    Unauthorized.
    [root@test-server ~]#
    

    この記事は役に立ちましたか?

    What's Next
    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.