要塞の保護
このトピックでは、要塞のセキュリティ情報および推奨事項について説明します。
Oracle Cloud Infrastructureの要塞では、パブリック・エンドポイントを持たないターゲット・リソースへの制限付きおよび時間制限付きアクセスを提供します。Bastionsでは、認可されたユーザーが、Secure Shell (SSH)セッションを使用して特定のIPアドレスからターゲット・リソースに接続できます。接続したユーザーは、SSHでサポートされている任意のソフトウェアまたはプロトコルを使用してターゲット・リソースとやり取りできます。たとえば、リモート・デスクトップ・プロトコル(RDP)を使用してWindowsホストに接続したり、Oracle Net Servicesを使用してデータベースに接続したりできます。
セキュリティ権限
要塞を安全に使用するには、セキュリティおよびコンプライアンスの責任について学習します。
Oracleは、次のセキュリティ要件を担当します。
- 物理セキュリティ: Oracleは、Oracle Cloud Infrastructureで提供するすべてのサービスを実行するグローバル・インフラストラクチャの保護に責任を持ちます。このインフラストラクチャは、Oracle Cloud Infrastructureサービスを実行するハードウェア、ソフトウェア、ネットワーキングおよび設備で構成されます。
このページには、次の領域を含むセキュリティ職責が記載されています。
- アクセス制御:権限はできるだけ制限します。ユーザーが作業を行うために必要なアクセス権のみを付与する必要があります。
- ネットワーク・セキュリティ:要塞にアクセスできるクラウド・ネットワーク内のノードを制限します。
- ホスト・セキュリティ:最大限のセキュリティを実現するために、クライアントおよびターゲット・インスタンスでSSHを構成します。
初期セキュリティ・タスク
このチェックリストを使用して、新しいOracle Cloud Infrastructureテナントで 要塞 を保護するために実行するタスクを識別します。
タスク | 詳細情報 |
---|---|
IAMポリシーを使用して、ユーザーおよびリソースへのアクセス権を付与します | IAMポリシー |
要塞を作成する場合、ネットワーク・アクセスを制限します | ネットワーク・セキュリティ |
定期的なセキュリティ・タスク
IAMポリシー
ポリシーを使用して、要塞へのアクセスを制限します。
ポリシーは、Oracle Cloud Infrastructureリソースにアクセスできるユーザーとその方法を指定します。詳細は、ポリシーの仕組みを参照してください。
職責を実行するために必要な最小限の権限をグループに割り当てます。各ポリシーには、グループが実行できるアクションを記述する動詞があります。最も少ないアクセス量から使用可能な動詞は、inspect
、read
、use
およびmanage
です。
要塞では、次のような要塞へのアクセスをさらに制限するポリシー変数がサポートされています。
target.bastion-session.username
-コンピュート・インスタンスに接続するセッションを作成するときに、特定のPOSIXオペレーティング・システムのユーザー名へのアクセスを制限します。target.resource.ocid
-セッションの作成時に特定のコンピュート・インスタンスへのアクセスを制限します。
デフォルトでは、Oracle Cloud Infrastructureプラットフォーム・イメージに
sudoer
機能があるため、opc
ユーザー(およびUbuntuプラットフォーム・イメージ内のubuntu
ユーザー)へのアクセスを制限することをお薦めします。最小限のIAMユーザーおよびグループにDELETE
権限を付与することをお薦めします。この演習では、認可されたユーザーまたは悪意のあるアクターによる不注意な削除からのデータの損失を最小限に抑えます。DELETE
権限はテナンシ管理者およびコンパートメント管理者にのみ付与します。
グループSecurityAdmins
のユーザーに、テナンシ全体のあらゆる要塞リソースの作成、更新および削除を許可します:
Allow group SecurityAdmins to manage bastion-family in tenancy
Allow group SecurityAdmins to manage virtual-network-family in tenancy
Allow group SecurityAdmins to read instance-family in tenancy
Allow group SecurityAdmins to read instance-agent-plugins in tenancy
Allow group SecurityAdmins to inspect work-requests in tenancy
グループBastionUsers
のユーザーに、テナンシ全体のセッションの作成、接続および終了を許可します:
Allow group BastionUsers to use bastion in tenancy
Allow group BastionUsers to manage bastion-session in tenancy
Allow group BastionUsers to manage virtual-network-family in tenancy
Allow group BastionUsers to read instance-family in tenancy
Allow group BastionUsers to read instance-agent-plugins in tenancy
Allow group BastionUsers to inspect work-requests in tenancy
グループSalesAdmins
のユーザーに、コンパートメントSalesApps
にある特定のターゲット・ホストのセッションの作成、接続および終了を許可します:
Allow group SalesAdmins to use bastion in compartment SalesApps
Allow group SalesAdmins to manage bastion-session in compartment SalesApps where ALL {target.resource.ocid='<instance_OCID>'}
Allow group SalesAdmins to manage virtual-network-family in compartment SalesApps
Allow group SalesAdmins to read instance-family in compartment SalesApps
Allow group SalesAdmins to read instance-agent-plugins in compartment SalesApps
Allow group SalesAdmins to inspect work-requests in tenancy
グループSalesAdmins
内のユーザーがコンパートメントSalesApps
およびユーザーopc
のセッションを作成、接続および終了することを許可します:
Allow group SalesAdmins to use bastion in compartment SalesApps
Allow group SalesAdmins to manage bastion-session in compartment SalesApps where ALL {target.bastion-session.username in ('opc')}
Allow group SalesAdmins to manage virtual-network-family in compartment SalesApps
Allow group SalesAdmins to read instance-family in compartment SalesApps
Allow group SalesAdmins to read instance-agent-plugins in compartment SalesApps
Allow group SalesAdmins to inspect work-requests in tenancy
任意のユーザーがコンパートメントHRProd
のセッションを作成、接続および終了することを許可しますが、IAMユーザー名と完全に一致するユーザー名を指定する場合のみ:
Allow any-user to manage bastion-session in compartment HRProd where ALL {target.bastion-session.username=request.user.name}
要塞ポリシーの詳細、およびその他の例を表示するには、要塞ポリシーを参照してください。
アクセス制御
IAMポリシーの作成に加えて、要塞で接続するターゲットへのアクセスを保護するために、次の追加のベスト・プラクティスに従います。
マルチファクタ認証(MFA)の有効化
プラガブル認証モジュール(PAM)を使用すると、ターゲットのLinuxインスタンスをIAMと統合して、最初のファクタ認証と2番目のファクタ認証でエンドユーザー認証を実行できます。
エンド・ユーザーは、SSHを使用してLinuxサーバーにログインし、IAMユーザー資格証明で認証できます。また、IAMのマルチファクタ認証機能を使用できます。MFAを使用すると、エンド・ユーザーは、Eメール、SMS、モバイル・オーセンティケータ・アプリケーションを使用して送信されたワンタイム・パスワード・コード、セキュリティ質問を使用した認証などの2番目の要素で認証するように求められます。
- PAMおよびMFAを構成する前に、インスタンスのSSH構成が要塞の最小要件を満たしていることを確認します。Troubleshooting Bastionのターゲット・インスタンスでSSHサーバーが適切に構成されていないのセクションを参照してください。
- インスタンスにPAMをインストールして構成し、MFAを有効化します。LinuxへのMFA認証の有効化を参照してください。
データ暗号化
SSHを使用してクライアントとベース間の通信を暗号化するには、次のベスト・プラクティスに従ってください。
FIPS認定モジュールの使用
すべてのクライアント・オペレーティング・システムで、Federal Information Processing Standard (FIPS)保護を使用するOpenSSH 7.6クライアントを使用することをお薦めします。
詳細は、OpenSSL FIPSのドキュメントおよび Cryptographic Module Validation Programを参照してください。
Oracle Linux 7.8 OpenSSH Client Cryptographic ModuleはまだFIPS認証を受けていません。Oracle FIPS Certifiedationsを参照してください。
デフォルトでは、RSAキー・ペアはOpenSSHクライアント・バージョン8以上ではサポートされません。RSAキー・ペアを有効にするには、次のスタンザをSSH構成に追加する必要があります。
Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
詳細は、OpenSSHリリース・ノートを参照してください。
セッションにSSHキー・ペアを再利用しない
新しい要塞セッションごとに新しい一時SSHキー・ペアを再生成します。
以前に生成されたキー・ペアは再使用しないでください。ポート転送と管理対象SSHセッション・タイプの両方に新しいキー・ペアを作成します。
ネットワーク・セキュリティ
要塞を使用して接続するリソースへのネットワーク・アクセスを保護します。
要塞の作成時に、CIDRブロック許可リストを使用して、この要塞でホストされるセッションに接続できるようにする1つ以上のアドレス範囲をCIDR表記で指定します。
アドレス範囲が制限されるほど、セキュリティが向上します。0.0.0.0/0
などのオープンCIDR範囲を指定しないでください。
強化
最大限のセキュリティを実現するために、ターゲット・コンピュート・インスタンスでSSHサーバーを構成します。
これらの設定のデフォルト値は、/etc/ssh/sshd_config
で更新することをお薦めします。
設定 | 説明 |
---|---|
MaxAuthTries |
接続ごとに許可される認証の最大試行回数を指定します。障害の数がこの値の半分に達すると、失敗が記録されます。 |
ClientAliveCountMax |
クライアントからメッセージを受信せずに送信できる、クライアントのライブメッセージの数を設定します。クライアントのライブ・メッセージの送信中にこのしきい値に達すると、サーバーはクライアントを切断し、セッションを終了します。 |
ClientAliveInterval |
クライアントからデータが受信されていない場合、サーバーは暗号化チャネルを介してメッセージを送信し、クライアントからの応答を要求するタイムアウト間隔を秒単位で設定します。 |
監査
要塞のアクセス・ログおよびその他のセキュリティ・データを特定します。
監査サービスは、Oracle Cloud Infrastructureリソースに対するすべてのAPIコールを自動的に記録します。監査サービスを使用してテナンシ内のすべてのユーザー・アクティビティをモニターすることで、セキュリティおよびコンプライアンスの目標を達成できます。コンソール、SDKおよびコマンドライン(CLI)のコールはすべてAPIを経由するため、これらのソースからのすべてのアクティビティが含まれます。監査レコードは、認証されたフィルタ可能な問合せAPIを介して使用可能であるか、オブジェクト・ストレージからバッチ・ファイルとして取得できます。監査ログの内容には、発生したアクティビティ、アクティビティを開始したユーザー、リクエストの日時、リクエストのソースIP、ユーザー・エージェントおよびHTTPヘッダーが含まれます。監査ログ・イベントの表示を参照してください。
次に、新しい要塞セッションを作成するためのログ・エントリからの抜粋を示します。
{
"datetime": 1651547126164,
"logContent": {
"data": {
"additionalDetails": {
"X-Real-Port": 58181,
"bastionId": "ocid1.bastion.oc1.<unique_id>",
"bastionName": "mybastion",
"displayName": "mysession",
"lifecycleState": "CREATING",
"sessionId": "ocid1.bastionsession.oc1.<unique_id>",
"sessionType": "MANAGED_SSH",
"targetResourceDisplayName": "mylinuxinstance",
"targetResourceId": "ocid1.instance.oc1.<unique_id>",
"targetResourceOperatingSystemUserName": "opc",
"targetResourcePort": "22",
"targetResourcePrivateIpAddress": "<target_ip_address>"
},
"availabilityDomain": "AD2",
"compartmentId": "ocid1.compartment.oc1..<unique_id>",
"compartmentName": "mycompartment",
"definedTags": null,
"eventGroupingId": "ocid1.bastionworkrequest.oc1.<unique_id>",
"eventName": "CreateSession",
"freeformTags": null,
"identity": {
"authType": "natv",
"callerId": null,
"callerName": null,
"consoleSessionId": "<unique_id>",
"credentials": "<unique_id>",
"ipAddress": "<source_ip>",
"principalId": "ocid1.user.oc1..<unique_id>",
"principalName": "<user_id>",
"tenantId": "ocid1.tenancy.oc1..<unique_id>",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
},
"message": "Session-20220502-2304 CreateSession succeeded",
...
}
}
テナンシでクラウド・ガードを有効にした場合、潜在的なセキュリティ上の懸念のあるユーザー・アクティビティがレポートされます。問題を検出すると、クラウド・ガードは修正アクションを提案します。特定のアクションを自動的に実行するようにクラウド・ガードを構成することもできます。クラウド・ガードの開始およびレポートされた問題の処理を参照してください。