16.20 - JWT認証の使用 - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ NewSQL Engineセキュリティ管理

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/rmm1512082852218.ditamap
dita:ditavalPath
ja-JP/rmm1512082852218.ditaval

JWT認証のためのTeradata Databaseサーバーの構成

JSON Webトークン(JWT)認証メカニズムにより、ユーザーがTeradata UDAユーザー サービスに対して正常に認証されると、Teradata DatabaseへのSingle Sign-on (SSO)が有効になります。UDAユーザー サービスはTeradata AppCenterやTeradata® クエリー サービス (RESTサービス)などの各種のUDAアプリケーションおよびサービスに対してユーザーを認証します。アプリケーションまたはサービスの1つに対して認証されたユーザーは、JWTを使って、Single Sign-onを実行してTeradata Databaseとのセッションを確立することができます。

JWT認証の使用を有効にするには、次のセットアップを完了します。

  1. Teradata® クエリー サービス(REST API)を呼び出すことにより、UDAユーザー サービスから復号化および検証キーを取得します。これは、サービスに組み込まれたSwagger UIブラウザ インターフェースを介して、またはcURLコマンドを使用して実行することができます。デフォルトでは、Swagger UIエンドポイントはブロックされるように構成されているため、cURLを使用することを推奨します。

    次のコマンドを使用してキーの認証と取得を行なうことができます。UDAユーザー サービスにアクセスできるデータベース ノードから次の操作を行ないます。

    1. Adminユーザーとして認証し、JWTを取得します。
      curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ 
         "password": <PW>, \ 
         "username": <USERNAME> \ 
       }' 'https://<server_name>:<port_num>/token'
      
    2. 復号化キーを取得します。
      curl -X GET --header 'Accept: text/plain' --header 'Authorization: Bearer <MY JWT TOKEN>' 'https://<server_name>:<port_num>/decryptionKey'
      
    3. 署名(検証)キーを取得します。
      curl -X GET --header 'Accept: text/plain' --header 'Authorization: Bearer <My JWT TOKEN>' 'https://<server_name>:<port_num>/signatureKey'
      

      ここで、<server_name>はUDAユーザー サービスを実行しているサーバーで、<port_num>はUDAユーザー サービスのポート番号です。

      ポート番号(<port_num>)は構成可能です。RPMバージョンのユーザー サービスの場合、通常は8001です。コマンド例の<port_num>を構成したポート番号に置き換えます。
    4. 鍵ファイルを任意のファイル名と場所に保存します。復号化と検証の鍵ファイルは.pem拡張子を持ち、ヘッダーとフッターを含む必要があります。

      例えば、復号化キーは次のようになります。

      # cat decryption_key.pem
      -----BEGIN RSA PRIVATE KEY-----
      MIICXgIBAAKBgQCdx3v70O97sQ4retwU54YFp+khWhqZ4qZ0ekUTz/9T9a36bbX6
      2TnRTR/59tkITiu5mPwQCoAvL9DZNJWUUpzjugWjZGzBHlCFfKe3KTnhw6IXNnHb
      PJV7b5vunaoDt+iur+MkKcgj0i+4G/mmXUk/rIFiLJQtWVr4Coj3jYj+NQIDAQAB
      AoGBAIBnMyCJNgys2AJMl0Uv8mMx9kldQd7QlHSgeQ0ZrgpPG4p9tKb0F9ic8pQD
      7zaSH4WI2kHXueAtAsNxxvWRkfl7pzVjUMrIqwnivkNFTY4iPzJeRw/3KLxhlgfv
      Q7l+CMprKnLuscl9Dt9oR4+Ypm745yPJ+6ZnHJyvXELPU0rVAkEA6fhqcumIEOsJ
      TU+Lo94xKngXHS4ms9dND0xZEhPImTXz4YPWCCwX11d6wII2Tz3k+LTQ/I/2rqy8
      9DXpwBs4hwJBAKyikc9jvEEHfeUNNymjf5Bg9eRVnzPaq6QitTaXvT/zPgjElOFh
      GpADP7fUiUR4PtocZ47Q8co+jIMR8XEvTmMCQQC3SjmyLgq/HjGaVB+Tz0P6/js1
      S+tb5eXjfy8j/0Wd6OtWlt48ZraCp3BtkVSUfWt7/sLdqLZans4kDnxBV9HPAkEA
      qNzoNW1AUneqjKdNovwbpjVBsJSUAlvN8uJEUV9BrdEXh+oKGx8ppV6YMA/EKWZZ
      TG3mWgtFx2dBeF/PxL/aMwJAWepYUPkM3MReuAp7oij4qIrOq9xPpHlO4+kBKMWp
      yR6wvSLqDxSX3erkBq6Eh39BMchta3clU7PXck4pKrDf0A==
      -----END RSA PRIVATE KEY-----
      

      例えば、検証キーは次のようになります。

      # cat verification_key.pem
      -----BEGIN PUBLIC KEY-----
      MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCdx3v70O97sQ4retwU54YFp+kh
      WhqZ4qZ0ekUTz/9T9a36bbX62TnRTR/59tkITiu5mPwQCoAvL9DZNJWUUpzjugWj
      ZGzBHlCFfKe3KTnhw6IXNnHbPJV7b5vunaoDt+iur+MkKcgj0i+4G/mmXUk/rIFi
      LJQtWVr4Coj3jYj+NQIDAQAB
      -----END PUBLIC KEY-----
      
  2. (マルチノード インストールの場合)キーを別のデータベース ノードに安全に転送します。キー ファイルの権限を調べ、Teradata Databaseがアクセスできることを確認します。キーを転送するには、以下を実行します。
    1. キーを含むデータベース ノードにログオンします。
    2. キーを別のデータベース ノードに移動します。
      pcl -send <location>/<decryption_key_file_name> <location>/<decryption_key_file_name>
      
      pcl -send <location>/<verification_key_file_name> <location>/<verification_key_file_name>
      復号化および検証キー ファイルはすべてのノードの同じ場所に格納します。
  3. TdgssUserConfigFile.xmlを編集し、次のセクションのコメントを外します。
    <!-- JWT -->
    <!-- To modify JWT mechanism configuration, uncomment this section and edit
            <Mechanism Name="JWT">
                <MechanismProperties
                    MechanismEnabled="yes"
                    DefaultMechanism="no"
    
                    JWTDecryptionKeyFile=""
                    JWTVerificationKeyFile=""
                    JWTSkewTime="300"
                    />
    </Mechanism>
    (end of commented out section)-->
    
  4. JWTDecryptionKeyFileを復号化キーを含むファイルへの絶対パスに設定します。
  5. JWTVerificationKeyFileを検証キーを含むファイルへの絶対パスに設定します。
  6. オプション。 JWTSkewTimeを編集して設定します。 JWTSkewTimeは、有効期限が切れた後もJWTが有効となる秒数です。
  7. ファイルを保存します。
  8. run_tdgssconfigユーティリティを実行してTDGSSCONFIG GDOを更新します。
    /opt/teradata/tdgss/bin/run_tdgssconfig
  9. tdgssfixpathsを実行して、JWTDecryptionKeyFileとJWTVerificationKeyFileの所有者と権限を設定します。
    psh 'perl /opt/teradata/tdgss/bin/tdgssfixpaths'
  10. tparesetを実行し、TDGSS構成への変更をアクティブ化します。
    tpareset

例: JDBCを使用してJWTに接続する

Programmatically connect to JWT through JDBC:

jdbc:teradata://<system_name>/LOGMECH=JWT,LOGDATA=”token=<JWT of user>”

Where:

  • <system_name>はTeradata Databaseのシステム名です
  • LOGMECHはJWT(メカニズム名)に設定されます
  • <JWT of user>はユーザーのトークンの値で、次のようになります。
    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

関連情報

JWTについての詳細は、https://tools.ietf.org/html/rfc7519を参照してください。

JWTの構成の詳細については、JWTメカニズムおよびJWTサポート プロパティを参照してください。

クライアントからの接続の詳細については、以下を参照してください。