web-dev-qa-db-ja.com

SYSおよびSYSTEMアカウントのロック

データベースをできるだけ安全に保つために、SYSアカウントとSYSTEMアカウントをロックして、誰もログインできないようにします。

仮定して:

  1. SYSまたはSYSTEMとしてログインしているOSスクリプト/ cronジョブはありません
  2. これらのアカウントのいずれかを使用するアプリケーションまたは外部ユーティリティはありません
  3. 適切なOSアカウントで常に「/ sysdbaとして」ログインできます

これら2つのアカウントをロックすると、悪影響がありますか?それが良いアイデアかどうかについてコメントすることができる人は誰でもこれを以前にやったことがありますか?

3
andba77

SYSTEMは問題なくロックできます。

SYSは異なります。ロックすることはできません。たとえロックできるとしても、ロックすることはできません。

_SQL> show user
USER is "SYS"
SQL> alter user sys account lock;

User altered.

SQL> select account_status from dba_users where username = 'SYS';

ACCOUNT_STATUS
--------------------------------
LOCKED

SQL> conn / as sysdba
Connected.
SQL> show user
USER is "SYS"

SQL> connect sys@ORCL as sysdba
Enter password:
Connected.

SQL> show user
USER is "SYS"
SQL> select account_status from dba_users where username = 'SYS';

ACCOUNT_STATUS
--------------------------------
LOCKED
_

_remote_login_passwordfile_をSYSに設定すると、リモートnoneログインを無効にできるため、ローカルログインのみが許可されます。これにより、たとえばData Guardを使用できなくなります。

_'/ as sysdba'_にSQLNET.AUTHENTICATION_SERVICES=(none)を設定することにより、_sqlnet.ora_を防ぐこともできます。

最後に、上記を_$Oracle_HOME/dbs_からのパスワードファイルの削除と組み合わせることで、完全にロックアウトできます。この方法では、SYSDBAまたはSYSOPERとしてログインできなくなります。しかし、それでも、SYSユーザーは実際にはロックされず、認証されないだけです。パスワードファイルを再作成すると、再びアクセスできるようになります。

4
Balazs Papp

両方をロックします(SYSおよびSYSTEM)。あなたは日常的にそれらを使用する必要はありません、何も壊れません。

日常的には、SYSDBAまたはSYSOPERを持つ指定されたユーザーアカウントを使用する必要があります。

Tom Kyteはこれを行うことを推奨しています なので、何かがうまくいかなかった場合はいつでも彼を責めることができます:-)

4
Philᵀᴹ