web-dev-qa-db-ja.com

コード、データ、パスワードは暗号化されていますか? sqlplus $ USER / $ PASSWORD @ $ Oracle_REMOTE_SID

* NIXスクリプトの多くは「sqlplus $ USER/$ PASSWORD @ $ Oracle_REMOTE_SID」を使用しています

スクリプトにクリアテキストのパスワードを設定するのはよくないことを知っています(現時点で代替手段はありません)。しかし、質問

  • ネットワーク経由で送信されるユーザー名とパスワードは安全に暗号化されていますか?
  • ネットワーク経由で送信されるSQLコードは安全に暗号化されていますか?
  • ネットワーク経由で送信されるデータは安全に暗号化されていますか?
3
Ivanov

答えは

  1. いいえ(ユーザー名は表示されます)/はい(ほとんどの場合パスワードは非表示です)
  2. および3通常ではありません。追加料金を支払い、高度なセキュリティオプションを実装する場合を除きます。

記入するには(1)。 Oracleデータベースには、実際のパスワードではなく、パスワードのハッシュがあります。接続すると、Oracleは値を選択してクライアントに送信します。クライアントはユーザーが入力したパスワードをハッシュして、データベースが保存しているのと同じハッシュを取得し、それを使用してデータベースから送信された値をハッシュします。それをデータベースに送り返します。その間、データベースは同じハッシュされたパスワードでその値をハッシュしました。

クライアントがデータベースと同じ値になった場合、同じ開始点(つまり、ユーザーのパスワード)から来たと見なされます。 完全な説明

11gアルゴリズム は少し異なりますが、基本的な考え方は、パスワードがクリアテキストまたは簡単なハッシュで渡されないことです。深刻な攻撃者が必要になります。


スクリプトがデータベースサーバー上にある場合は、パスワードの代わりにOS認証を使用できます。あなたができる他のトリックがあります(データベースにどのIPアドレスから来ているかを判断させ、それに応じてホワイトリスト/ブラックリストを置くなど)。

1
Gary

構成によって異なります。 Oracleは、プロトコルおよびデータドライバーの一部としてTLSをサポートしているため、TLS(SSL)を介して完全に認証および通信できます

これがデフォルトで有効になっているかどうかは、以下に依存します。

  • 使用しているOracle DBMSのバージョン。
  • 使用しているデータドライバー。
  • データドライバーのバージョン。

TLSを介して認証し、残りの通信を平文で行うことが可能かどうかはわかりませんが、あまり安全ではありません。

1
Polynomial

チェックアウト [〜#〜] tnsalias [〜#〜] Oracle Walletでパスワードを非表示にします。確かに、それはすべての人に隠されているわけではありませんが、DBAとスクリプト管理者を分離して、パスワードやTNS文字列を覗き見しないようにすることができます。

0
Callum Wilson

私が知っていることから、私は言うでしょう:

  • 番号
  • 番号
  • 番号

そして、それはかなり要約されます:) DBへのVPNのセキュリティ設定が必要な場合(専用接続の方が良いです)。証明書認証を使用します(少しのオーバーヘッド)。

0
damiankolasa