3 準備
マイクロサービス対応トランザクション・マネージャ(MicroTx)のインストールを開始する前に、トランザクション・ストア、アイデンティティ・プロバイダおよびオプションでロード・バランサを設定します。
- トランザクション・ストア: MicroTxは、トランザクション状態の永続性を確保するためにデータ・ストアを使用します。トランザクション情報の格納には、etcdクラスタまたはOracle Databaseを使用できます。
- アイデンティティ・プロバイダ: OpenID Connect JWTトークンを使用して、MicroTxへのユーザー・アクセスを認証および認可します。
- ロード・バランサ: オプションで、ロード・バランサを設定する場合、ロード・バランサはヘッダーベースのルーティングとmTLSをサポートする必要があります。
- インストール・バンドルのダウンロード
次のステップを実行して、MicroTxインストール・バンドルをローカル・システムにダウンロードします: - データ・ストアの作成
MicroTxのトランザクション表を格納するデータ・ストアを作成します。 - 認証および認可について
認証によって、認可された個人のみがTransaction Manager for Microservices (MicroTx)、マイクロサービス、データにアクセスできるようになります。認可によって、システム権限およびデータへのアクセス制御が提供されます。これは認証に基づいて、個人が適切なアクセス権を取得することを保証します。
3.1 インストール・バンドルのダウンロード
次のステップを実行して、MicroTxインストール・バンドルをローカル・システムにダウンロードします:
次のフォルダがあります。
lib
: このフォルダには、MicroTxライブラリ・ファイルが含まれます。MicroTxを使用してアプリケーション・マイクロサービス間のトランザクションを管理するには、アプリケーション・コードでこれらのライブラリ・ファイルを使用する必要があります。otmm
: このフォルダには、MicroTxイメージおよびYAML
ファイルが含まれ、これを使用してMicroTxをインストールおよび構成できます。samples
: このフォルダには、様々なトランザクション・プロトコル(XA、LRAおよびTCC)のサンプル・アプリケーションのソース・コードが含まれています。サンプル・アプリケーションのソース・コードには、MicroTxライブラリも含まれています。
親トピック: 準備
3.2 データ・ストアの作成
MicroTxのトランザクション表を格納するデータ・ストアを作成します。
Oracle Databaseの設定の詳細は、設定するデータベースに固有のドキュメントを参照してください。
データベースに表を作成するために必要な権限があることを確認してください。MicroTxをインストールすると、サービスによって必要な表がデータベースに作成されます。MicroTxには、データベースに関する特定の詳細が必要です。
- Autonomous Databaseクライアント資格証明の取得
MicroTxでは、トランザクション情報を追跡するための永続ストアとしてOracle Databaseの使用がサポートされます。 - etcdのRSA証明書の生成
トランザクション・コーディネータのYAML
ファイルにetcd資格証明およびetcdエンドポイントを指定する必要があります。MicroTxは、この情報を使用して、サービスのインストール後にデータベースへの接続を確立します。
親トピック: 準備
3.2.1 Autonomous Databaseクライアント資格証明の取得
MicroTxでは、トランザクション情報を追跡するための永続ストアとしてOracle Databaseの使用がサポートされます。
- Autonomous Databaseインスタンスからウォレットをダウンロードします。共有ExadataインフラストラクチャでのOracle Autonomous Databaseの使用のクライアント資格証明(ウォレット)のダウンロードに関する項を参照してください。
ZIPファイルがローカル・マシンにダウンロードされます。ウォレット・ファイルの名前が
Wallet_database.zip
であるとします。 - ウォレット・ファイルを解凍します。
unzip Wallet_database.zip
ファイルが1つのフォルダに抽出されます。このフォルダの名前を書き留めます。次のステップで提供する必要があります。
- ウォレット・ファイルを抽出したフォルダの場所を格納する構成マップを作成します。
このステップは、KubernetesクラスタにMicroTxをデプロイする場合にのみ実行します。
MicroTxをデプロイするネームスペースに構成マップを作成してください。
kubectl create configmap db-wallet-configmap --from-file=/Wallet_database_folder/ -n otmm
説明
db-wallet-configmap
は、作成する構成マップの名前です。MicroTxをデプロイする際、values.yaml
ファイルにこの名前を指定するため、この名前を書き留めます。Wallet_database_folder
は、圧縮されたウォレット・ファイルの内容を抽出したフォルダです。otmm
は、MicroTxをデプロイするネームスペースです。
これらの値を、環境に固有の値に置き換えます。
-
Docker SwarmにMicroTxをデプロイする場合にのみ、次のステップを実行します。
-
Oracle Databaseのデータ・ストアへの接続文字列を作成します。
非自律型Oracle Database (資格証明ウォレットを使用しないデータベース)を使用している場合は、次の形式を使用して接続文字列を入力します:<publicIP>:<portNumber>/<database unique name>.<host domain name>
たとえば、
123.213.85.123:1521/CustDB_iad1vm.sub05031027070.customervcnwith.oraclevcn.com
です。 - 前のステップで作成した接続文字列に
&wallet_location=/app/Wallet
を追加します。たとえば:tcps://adb.us-ashburn-1.oraclecloud.com:1522/bfeldfxbtjvtddi_brijeshadw1_medium.adb.oraclecloud.com?retry_count=20&retry_delay=3&wallet_location=/app/Wallet
ここで、
/app/Wallet
は、ウォレット・ファイルをダウンロードした場所です。この値は後で
tcs-docker-swarm.yaml
ファイルで指定する必要があるため、この接続文字列を書き留めます。
-
親トピック: データ・ストアの作成
3.2.2 etcdのRSA証明書の生成
トランザクション・コーディネータのYAML
ファイルにetcd資格証明およびetcdエンドポイントを指定する必要があります。MicroTxは、この情報を使用して、サービスのインストール後にデータベースへの接続を確立します。
etcdをトランザクション・ストアとして使用しない場合は、このステップをスキップします。
開始する前に、次のタスクを完了してください。
- CFSSLツールをインストールします。https://github.com/cloudflare/cfsslを参照してください。このトピックには、CFSSLツールを使用して証明書を作成するためのサンプル・コマンドが記載されています。このツールまたはその他の任意のツールを使用して、証明書を生成できます。
- etcdデータベースをインストールして構成します。etcdデータ・ストアの作成の詳細は、https://etcd.io/docs/を参照してください。
- セキュリティを強化するためにetcdでTLSを有効にし、トランザクション・コーディネータの
YAML
ファイルに証明書の詳細を指定します。
親トピック: データ・ストアの作成
3.3 認証および認可について
認証によって、認可された個人のみがTransaction Manager for Microservices (MicroTx)、マイクロサービス、データにアクセスできるようになります。認可によって、システム権限およびデータへのアクセス制御が提供されます。これは認証に基づいて、個人が適切なアクセス権を取得することを保証します。
- 認証および認可について
認可トークンおよびリフレッシュ・トークンを使用して、トランザクション・イニシエータ・サービスとMicroTxの間のセキュアな通信を確保します。非同期コールをサポートするために、アクセス・トークンおよびリフレッシュ・トークンを格納します。トークン伝播を使用して、参加側サービスとMicroTxの間のセキュアな通信を確保します。 - Oracleアイデンティティ・プロバイダの使用
Oracle Identity Cloud Service (IDCS)またはOracle IAMをアイデンティティ・プロバイダとして使用し、アプリケーションへのアクセスを管理できます。 - 検出URLの実行
アイデンティティ・プロバイダを設定した後、任意のブラウザで検出URLを実行して、認証のためにvalues.yaml
ファイルに指定する必要がある値を書き留めます。 - アクセス・トークンの作成
このトピックでは、アイデンティティ・プロバイダとしてOracle IDCSまたはOracle IAMを使用する場合にアクセス・トークンを作成するための詳細を示します。
親トピック: 準備
3.3.1 認証および認可について
認可トークンおよびリフレッシュ・トークンを使用して、トランザクション・イニシエータ・サービスとMicroTxの間のセキュアな通信を確保します。非同期コールをサポートするために、アクセス・トークンおよびリフレッシュ・トークンを格納します。トークン伝播を使用して、参加側サービスとMicroTxの間のセキュアな通信を確保します。
- 認可トークンおよびリフレッシュ・トークンについて
認可トークンおよびリフレッシュ・トークンを使用して、トランザクション・イニシエータ・サービスとMicroTxの間のセキュアな通信を確保します。認可トークンおよびリフレッシュ・トークンを作成するにはアイデンティティ・プロバイダを使用します。新しいREST APIリクエスト(旅行を予約するリクエストなど)を送信するときに、リクエスト・ヘッダーで認可トークンとリフレッシュ・トークンも渡す必要があります。 - Oracle_Tmm_Tx_Tokenトランザクション・トークンについて
トランザクション・トークンの作成と伝播を有効にして、参加側サービスとMicroTxの間のセキュアな通信を確保します。YAMLファイルでtransactionTokenEnabled
をtrue
に設定すると、MicroTxは、署名付きトランザクション・トークンであるOracle_Tmm_Tx_Token
という新しいトークンを作成します。 - トークンの暗号化および格納について
非同期コールをサポートするために、MicroTxは認可トークンとリフレッシュ・トークンを格納してから、非同期コールで使用します。
親トピック: 認証および認可について
3.3.1.1 認可トークンおよびリフレッシュ・トークンについて
認可トークンおよびリフレッシュ・トークンを使用して、トランザクション・イニシエータ・サービスとMicroTxの間のセキュアな通信を確保します。認可トークンおよびリフレッシュ・トークンを作成するにはアイデンティティ・プロバイダを使用します。新しいREST APIリクエスト(旅行を予約するリクエストなど)を送信するときに、リクエスト・ヘッダーで認可トークンとリフレッシュ・トークンも渡す必要があります。
認可トークン
認証を有効にする際には、すべてのリクエストのauthorization
ヘッダーでアクセス・トークンを渡す必要があります。MicroTxは、JWTベースの認証を強制し、すべての受信リクエストの認証トークンを公開キーに対して検証します。また、MicroTxライブラリからトランザクション・コーディネータに送信されたすべてのコールも検証されます。MicroTxは、認可トークンを渡すユーザーに、操作を実行するために必要なシステム権限があることを確認します。これにより、検証されたユーザーのみがMicroTx APIにアクセスできるようになります。
YAMLファイルで認可を有効にしたときでも、リクエストの送信時に認可トークンを指定しない場合は、認可トークンがないためトランザクションは拒否されます。
リフレッシュ・トークン
リフレッシュ・トークンを使用して、期限切れのアクセス・トークンをリフレッシュします。非同期のコールまたはトランザクションは、数分または数時間にわたる可能性があります。たとえば、LRAトランザクション・プロトコルを使用して、ホテルと航空券を予約するとします。ユーザーが予約を完了するまでに数分かかる場合があります。しかしながら、ユーザーがトランザクションを完了する前に、認証トークンが期限切れになる可能性があります。YAMLファイルでアイデンティティ・プロバイダのURLおよびクライアントIDを指定すると、MicroTxはリフレッシュ・トークンをアイデンティティ・プロバイダに提供し、新しいアクセス・トークンを取得します。
親トピック: 認証および認可について
3.3.1.2 Oracle_Tmm_Tx_Tokenトランザクション・トークンについて
トランザクション・トークンの作成と伝播を有効にして、参加側サービスとMicroTxの間のセキュアな通信を確保します。YAMLファイルでtransactionTokenEnabled
をtrue
に設定すると、MicroTxは、署名付きトランザクション・トークンであるOracle_Tmm_Tx_Token
という新しいトークンを作成します。
次のステップで、MicroTxがOracle_Tmm_Tx_Token
トランザクション・トークンを作成し、参加側サービスとMicroTxの間の後続の通信でそのトークンを伝播する方法を説明します。
- ユーザーがトランザクションを開始すると、トランザクション・イニシエータ・サービスがMicroTxにリクエストを送信します。
- MicroTxはトランザクション・イニシエータに応答し、レスポンス・ヘッダーで
Oracle_Tmm_Tx_Token
を返します。MicroTxライブラリは、指定した秘密キーと公開キーのペアに基づいてこのトークンを作成します。ユーザーが
Oracle_Tmm_Tx_Token
トランザクションを作成したり、リクエスト・ヘッダーで渡したりする必要はありません。MicroTxは、複数のヘッダーおよびトークンを使用して動作します。わかりやすくするために、この項では
Oracle_Tmm_Tx_Token
トランザクション・トークンについてのみ説明します。 - 参加側サービスからトランザクション・コーディネータへのコールを保護するため、MicroTxライブラリは、後続のすべてのコールのリクエスト・ヘッダーに
Oracle_Tmm_Tx_Token
を渡します。
Kubernetesクラスタでのトランザクション・トークンの伝播を有効にするには、「トランザクション・トークンのプロパティ」を参照してください。
Docker Swarmでのトランザクション・トークンの伝播を有効にするには、「トランザクション・トークンのプロパティ」を参照してください。
親トピック: 認証および認可について
3.3.1.3 トークンの暗号化および格納について
非同期コールをサポートするために、MicroTxは認可トークンとリフレッシュ・トークンを格納してから、非同期コールで使用します。
トークンを格納するには、トークンを暗号化する必要があります。トークンを直接格納することはできないためです。トークンを暗号化するには、暗号化キーを作成します。MicroTxはトークンを暗号化して格納します。MicroTxから参加側サービスへの非同期コールがある場合、MicroTxは暗号化されたトークンをフェッチし、それを復号化してから、トークンをリクエスト・ヘッダーに添付します。
MicroTxは、アクセス・トークンおよびリフレッシュ・トークンを暗号化し、後で参加側サービスへのコール時に使用します。MicroTxは、トランザクションごとに初期化ベクトルの新しい値を生成します。各トランザクション・レコードには、キー・バージョンや初期化ベクトル値などの暗号化されたメタデータ情報が含まれます。
親トピック: 認証および認可について
3.3.2 Oracleアイデンティティ・プロバイダの使用
Oracle Identity Cloud Service (IDCS)またはOracle IAMをアイデンティティ・プロバイダとして使用し、アプリケーションへのアクセスを管理できます。
KeycloakまたはMicrosoft ADをアイデンティティ・プロバイダとして使用する場合は、アイデンティティ・プロバイダの設定およびアクセス・トークンの作成の詳細について製品ドキュメントを参照してください。
Oracle Cloud Infrastructureでは、以前はOracle IDCSがアイデンティティ・プロバイダとして使用されていました。現在、Oracle Cloud Infrastructureでは、アイデンティティ・プロバイダとしてOracle IAMが使用されます。
- アイデンティティ・プロバイダとしてのOracle IAMの使用
Oracle IAMをアイデンティティ・プロバイダとして使用し、アプリケーションへのアクセスを管理できます。 - アイデンティティ・プロバイダとしてのOracle IDCSの使用
Oracle IDCSをアイデンティティ・プロバイダとして使用し、アプリケーションへのアクセスを管理できます。
親トピック: 認証および認可について
3.3.2.1 アイデンティティ・プロバイダとしてのOracle IAMの使用
Oracle IAMをアイデンティティ・プロバイダとして使用し、アプリケーションへのアクセスを管理できます。
親トピック: Oracleアイデンティティ・プロバイダの使用
3.3.2.2 アイデンティティ・プロバイダとしてのOracle IDCSの使用
Oracle IDCSをアイデンティティ・プロバイダとして使用し、アプリケーションへのアクセスを管理できます。
親トピック: Oracleアイデンティティ・プロバイダの使用
3.3.3 検出URLの実行
アイデンティティ・プロバイダを設定した後、任意のブラウザで検出URLを実行して、認証のためにvalues.yaml
ファイルに指定する必要がある値を書き留めます。
親トピック: 認証および認可について
3.3.4 アクセス・トークンの作成
このトピックでは、アイデンティティ・プロバイダとしてOracle IDCSまたはOracle IAMを使用する場合にアクセス・トークンを作成するための詳細を示します。
KeycloakまたはMicrosoft ADをアイデンティティ・プロバイダとして使用する場合は、アイデンティティ・プロバイダの設定およびアクセス・トークンの作成の詳細について製品ドキュメントを参照してください。
サービスに対するAPIコールは、有効な認証トークンが必要です。アクセス・トークンを作成します。これは、サービスに対する後続のAPIコールで指定できます。アクセス・トークンの他に、サービスに対する後続のAPIコールでリフレッシュ・トークンを指定することもできます。MicroTxは、リフレッシュ・トークンを使用して期限切れのアクセス・トークンをリフレッシュします。
OAuth 2.0トークンを取得した後、サービスに対する後続のAPIコールを作成するときに、authorization
およびrefresh-token
ヘッダーのトークンを使用します。
親トピック: 認証および認可について