TLSを使用したWallet (TLS)なしのGoアプリケーションの接続

TLSを使用して、ウォレットなしでGoアプリケーションをAutonomous Databaseインスタンスに接続できます。

ウォレットなしのGoアプリケーションの接続(TLS)では、認証および暗号化のセキュリティが提供され、(ユーザー名とパスワードを指定することで)クライアント資格証明を使用してセキュリティが強化されます。

トピック

Autonomous DatabaseでのTLSの有効化および接続文字列の取得

TLSを使用してウォレットを使用せずにGoアプリケーションを実行するには、TLS接続用のAutonomous Databaseインスタンスを有効にし、Goアプリケーションからデータベースに接続するための接続文字列を取得します。

  1. Autonomous DatabaseインスタンスがTLS接続に対して有効化されているかどうかを確認します。

    インスタンスがTLS接続に対して有効になっている場合、コンソールの「ネットワーク」領域で、「相互TLS (mTLS)認証」フィールドに「不要」が表示されます:

    adb_mutual_tls_not_required.pngの説明が続きます

    インスタンスに相互TLS認証が必要な場合は、Autonomous DatabaseインスタンスでTLS接続を許可します。詳細は、TLS認証とmTLS認証の両方を許可するためのAutonomous Databaseインスタンスの更新に関する項を参照してください。

  2. データベースにアクセスするためのAutonomous Databaseサービス接続文字列を次のように取得します:
    1. Oracle Cloud Infrastructure Consoleで、「データベース接続」をクリックします。
    2. 「データベース接続」ダイアログ・ボックスの「接続文字列」の下にある「TLS認証」ドロップダウン・リストで、「TLS」を選択します。
      ノート

      接続文字列をコピーする前に、「TLS認証」ドロップダウンで「TLS」を選択してTLS接続文字列を取得する必要があります(値が「相互TLS」の場合、接続文字列の値は異なり、TLS接続では機能しません)。
    3. アプリケーションで使用するデータベース・サービスの接続文字列をコピーします。
      詳細については、View TNS Names and Connection Strings for an Autonomous Database Instanceを参照してください。

TLSを使用したWalletなしのGoアプリケーションの実行

次の項では、Autonomous DatabaseインスタンスでGoアプリケーションを実行するステップについて説明します。

  1. Autonomous DatabaseでのTLSの有効化および接続文字列の取得の説明に従って、接続文字列を取得します。
  2. Goアプリケーションで、Autonomous Databaseインスタンスに接続するために次のパラメータを設定します:
    • password: データベース・ユーザー・パスワードを指定します。
    • user: データベース・ユーザーを指定します。
    • libDir: Oracle Instant Client zipパッケージを解凍する単一ディレクトリ。
    • connectString: 前のステップから取得した接続文字列を使用して、目的のデータベース・サービス名を使用して接続します。

    godrorドライバを使用してGoアプリケーションを実行するには、最初にgodrorパッケージをインポートする必要があります。

    次に、Autonomous Databaseに接続できるGoアプリケーションのサンプル・コードを示します:

    package main
    
    import (
        "database/sql"
        "fmt"
    
        _ "github.com/godror/godror"
    )
    
    func main() {
        connectToADb()
    }
    
    func connectToADb() {
        fmt.Println("Connecting to Oracle Autonomous database !!!")
        db, err := sql.Open("godror", `user="admin" password="password" 
        connectString="tcps://adb.ap-mumbai-1.oraclecloud.com:1522/abcd_xxxx_medium.adb.oraclecloud.com?wallet_location=/Users/user/tool/wallet_DB/"
        libDir="/home/user/tool/instantclient_19_8/"`)
        if err != nil {
            fmt.Println(err)
            return
        }
        defer db.Close()
    
        rows, err := db.Query("select 'hello' from dual")
        if err != nil {
            fmt.Println("Error running query")
            fmt.Println(err)
            return
        }
        defer rows.Close()
    
        var resData string
        for rows.Next() {
    
            rows.Scan(&resData)
        }
        fmt.Printf("The response is: %s\n", resData)
    }
    

    このコードは、Autonomous Databaseから取得されたレコードを返します。