cx_ Oracle предоставление ORA-01031 Недостаточные привилегии Вход в систему как SYSDBA - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь подключиться Oracle к удаленному серверу базы данных, используя Python cx_ Oracle. В sqlplus я использую " sqlplus / as sysdba " для подключения к серверу, используя консоль putty, и я должен успешно войти в систему. Не могли бы вы помочь мне в этом, почему это выдает эту ошибку.

import cx_Oracle
tns= cx_Oracle.makedsn('ip', port, SERVICE NAME = 'SID')   
db = cx_Oracle.connect('SYS', 'password', tns, mode=cx_Oracle.SYSDBA)

Это выдает ошибку:

cx_Oracle Database Error ORA-01031: insufficient privileges 

Я уже сделал одного обычного пользователя БД и попытался соединиться с и был успешным.

db = cx_Oracle.connect('USERNAME', 'password', tns)

1 Ответ

1 голос
/ 03 мая 2020

Вы должны быть в состоянии делать большинство (все?) Из тех вещей, которые вы упомянули с обычной ролью "DBA". SYSDBA часто требуется только при выполнении действий, требующих перезапуска базы данных, установки программного обеспечения и исправлений, или с помощью сценария резервного копирования / восстановления ios, и безумно одолевает для повседневного использования. В зависимости от вашей версии Oracle она способна полностью обойти многие функции безопасности и, как правило, небезопасна для использования в большинстве сценариев и приложений по этой причине. Использование должно быть ограничено только тем, что может только SYSDBA.

Кроме того, пользователю SYS может быть запрещено подключаться по сети (вы используете соединение TNS), так как аутентифицируется операционной системой сервера, которая подразумевает только локальный вход в систему. Вот почему «sqlplus / as sysdba» работает, когда вы вошли на сервер базы данных.

Примите во внимание следующее:

  1. Если вы должны иметь действительные привилегии SYSDBA и больше ничего не сделаете, предоставьте роль SYSDBA другому пользователю и используйте ее вместо этого. Как подсказывает @Littlefoot, никогда не использует учетные записи SYS или SYSTEM для повседневной административной работы, будь то на сервере или удаленно.
  2. Никогда не вставляйте имя пользователя и пароль в свои сценарии или приложение. код, особенно для аккаунта, который мощный. Вместо этого используйте кошелек Oracle для хранения зашифрованных учетных данных пользователя или, что еще лучше, попросите пользователя ввести их во время выполнения. Размещение таких учетных данных непосредственно в сценарии - это верный способ провалить аудит безопасности.
  3. Следуйте принципу наименьших привилегий и не используйте учетную запись с включенной ролью SYSDBA или DBA для чего-либо другого, кроме той, которую вы используете. нужно указать указанные привилегии c (добавление файлов и т. д. c.). По возможности используйте меньшие учетные записи.
  4. При использовании привилегированных учетных записей, таких как учетные записи с привилегиями DBA или SYSDBA, по сети вы должны зашифровать все соединения.

Подробнее см. Эти ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...