アプリケーション・セキュリティ
サービス・メッシュには、様々なアプリケーション・セキュリティ機能があります。このセクションでは、これらの機能の概要と実装の詳細について説明します。
セキュリティ機能の概要
イングレス・ゲートウェイは、サービス・メッシュへのエントリ・ポイントとして機能します。すべての受信トラフィックは、Transport Layer Security (TLS)またはMutual TLS (mTLS)を使用して暗号化できます。OCI証明書サービスは、証明書をメッシュに自動的に提供することも、独自の証明書を取得することもできます。受信トラフィックのホスト名、ポートおよびプロトコルを指定することもできます。イングレス・ゲートウェイ・ルート表は、プロトコルまたはリクエストのパスに基づいて、トラフィックを適切な仮想サービスにルーティングします。
詳細は、「イングレス・ゲートウェイのルート表の作成」を参照してください
サービス・メッシュには、メッシュ、イングレス・ゲートウェイおよび仮想サービス・コンポーネントに対するmTLSサポートが含まれています。mTLSは、コンポーネント間の相互認証の方法です。mTLSは、両方のパーティが正しい秘密キーを持っていることを確認することによって、ネットワーク接続の各側のパーティを検証します。サービス・メッシュでOCI証明書サービスを使用すると、認証局(CA)を構成して、サービス・メッシュ・リソース間の認証および暗号化に使用される証明書を自動的に管理できます。
サービス・メッシュには、アクセス・ポリシー機能が含まれています。アクセス・ポリシーは、仮想サービスから仮想サービス、または仮想サービスから外部サービスへの通信ルートを決定します。
セキュリティの詳細は、Oracle Security、IdentityおよびComplianceを参照してください
サービス・メッシュでのmTLSの使用
サービス・メッシュは、メッシュおよび仮想サービス・コンポーネントに対して相互TLS (mTLS)をサポートしています。mTLSは、コンポーネント間の相互認証方法です。mTLSは、両方のパーティが正しい秘密キーを持っていることを確認することで、ネットワーク接続の各端でパーティを検証します。この機能は、mTLSモードを選択するときに、次の値を使用してサービス メッシュに実装されます。
- 無効: raw TCPトラフィックは受け入れられます。通信が暗号化されていません。
- 許容: mTLSトラフィックとRAW TCPトラフィックの両方が受け入れられます。メッシュ内の通信はmTLSで暗号化されます。メッシュの外側からの通信は暗号化解除できます。
- 厳密<default>: mTLS暗号化トラフィックのみが受け入れられます。
メッシュおよび仮想サービス・レベルでmTLSを設定できます。では、さまざまな設定がどのように相互作用しますか。
ユーザー・インタフェースでmTLS設定を設定するには、次を参照してください。
メッシュと仮想サービスのmTLSの相互作用について
メッシュ上で最小mTLSモードが指定されている場合、メッシュ内のすべての通信に対して設定が適用されます。メッシュ通信には、仮想サービスへのイングレス・ゲートウェイおよび仮想サービスへの仮想サービスが含まれます。仮想サービスは、デフォルト設定を変更するためにmTLSモードを設定する必要があります。仮想サービスでmTLSモード構成がスキップされた場合、そのメッシュ内の仮想サービスでは、mTLSモードはメッシュ設定にデフォルト設定されます。
仮想サービスでmTLSモードが設定されている場合、設定はメッシュの最小モードとして少なくとも制限する必要があります。それ以外の場合、作成または更新操作は拒否されます。つまり、メッシュで設定された最小mTLSモードは、仮想サービスのmTLSモードに対して許可される値を制御します。たとえば、メッシュの最小mTLSモードがSTRICT
の場合、仮想サービスのmTLSではSTRICT
のみが許可されます。メッシュの最小mTLSモードがPERMISSIVE
の場合、仮想サービスはPERMISSIVE
またはSTRICT
になります。また、PERMISSIVE
の一部(一部はSTRICT
)の仮想サービスを混在させることができます。
イングレス ゲートウェイは、メッシュの外側からの通信に使用されます。最小のmTLSモードは、メッシュ外部からイングレス・ゲートウェイへの通信には影響しません。mTLSモードは、イングレス・ゲートウェイと仮想サービス間の通信にのみ影響します。
イングレス・ゲートウェイTLSモードの設定の詳細は、イングレス・ゲートウェイの作成を参照してください。
仮想サービスへの受信トラフィックの処理
仮想サービスの場合、受信トラフィックは3つのソースから取得されます。
- 仮想サービスからのトラフィックは、メッシュ・トラフィック内で考慮されます。
- イングレス・ゲートウェイからのトラフィックは、メッシュ・トラフィック内で考慮されます。
- メッシュ化されていない他のアプリケーションまたはサービスからのトラフィックは、メッシュ外部からのトラフィックとみなされます。
受信トラフィックタイプとmTLS設定に基づいて、仮想サービスが通信を処理する方法について説明します。
- mTLSが
DISABLED
に設定されている場合、前述の3つのシナリオのすべての通信は暗号化されません。 - mTLSモードが
PERMISSIVE
に設定されている場合、メッシュ(1)および(2)内のすべての通信はmTLSを使用して暗号化されます。メッシュの外部からの通信が許可され、サービスにTLSがないと暗号化されない場合があります。 - mTLSモードが
STRICT
に設定されている場合、メッシュ(1)および(2)内のすべての通信はmTLSを使用して暗号化されます。メッシュの外側からの通信は許可されません。
証明書サービスを使用したmTLS証明書の管理
Oracle証明書サービス認証局は、mTLS証明書を自動的に管理するためにサービス・メッシュとともに使用されます。デフォルトでは、証明書の有効期間は45日間であり、30日ごとに更新されます。ユーザーは、仮想サービスおよびイングレス・ゲートウェイの作成時に証明書の最大有効性を指定できます。最大有効期間は45日から90日までです。
証明書の有効性または更新期間は、証明書サービスから直接編集しないことをお薦めします。証明書サービスは、証明書バージョンの数を30に制限します。バージョン数が30に達すると、自動更新は失敗します。証明書の更新中の失敗を回避するには、古い証明書を適時に削除します。
証明書は、証明書の有効期間の3分の2ごとに自動的に更新されます。たとえば、最大有効期間が60日の場合、証明書は(2/3)*60 = 40日ごとに更新されます。
デプロイされたメッシュまたは仮想サービスのmTLS設定の変更
デプロイされたメッシュまたは仮想サービスのmTLS設定を変更すると、アプリケーションの稼働時間に影響することがあります。ダウンタイムを最小限に抑えるには、mTLS設定を隣接する設定にのみ移動します。たとえば、mTLS設定をDISABLED
からSTRICT
に変更するには、次の手順を実行します。
DISABLED
からPERMISSIVE
に変更します。- 次に、
PERMISSIVE
からSTRICT
に変更します。
状態がDISABLED
からSTRICT
に変わる順序は次のとおりです。
DISABLED -> PERMISSIVE -> STRICT
主体も逆に適用されます。状態をSTRICT
からDISABLED
に変更するには:
STRICT -> PERMISSIVE -> DISABLED
DISABLED
からSTRICT
またはSTRICT
からDISABLED
に直接移動すると、メッシュに数分間アクセスできなくなります。伝播遅延(2つのステップ間の最低30秒)を待機します。