Создание учетной записи oracle

Обновлено: 01.07.2024

Популярность базы данных Oracle во многом обусловлена ее гибкостью, которая заключается в большом количестве поддерживаемых типов интерфейсов с другими приложениями. А одним из факторов, влияющих на выбор базы данных, является ее интегрируемость с используемой средой. Например, если в компании развернут домен Windows 2000, то логично было бы требовать от базы данных наличия механизмов, позволяющих максимально задействовать возможности, предоставляемые службой каталога Active Directory. В качестве примера интеграции можно привести возможность аутентификации пользователей при доступе к ресурсам, хранящимся в базе данных. Эта возможность реализуется механизмами аутентификации посредством протоколов Kerberos, RADIUS и NTS.

АУТЕНТИФИКАЦИЯ KERBEROS

Протокол Kerberos был разработан в MIT (Massachusetts Institute of Technology, Массачусетский технологический институт) и используется для обеспечения прозрачного, то есть не требующего дополнительного ввода данных аутентификации, доступа пользователей к ресурсам, поддерживающим протокол аутентификации Kerberos. Механизм работы протокола Kerberos следующий.

  • Пользователь обращается к серверу Kerberos (Key Distribution Center, KDC), предоставляя данные аутентификации (имя пользователя и пароль).
  • Сервер KDC генерирует билет (ticket), в котором хранится сеансовый ключ пользователя, снабженный меткой времени, когда был сгенерирован сеансовый ключ, и передает его пользователю.
  • При дальнейшем обращении к ресурсам пользователь предъявляет ресурсу билет, данные билета проверяются на сервере KDC, и, если все в порядке, пользователю предоставляется доступ к ресурсу.

ktpass -princ oracle/server_bd@domain -mapuser user -pass password -out c:v5srvtab.dat

После выполнения описанной команды следует ожидать примерно такого результата, как показано на рис. 1.

Полученный файл необходимо перенести на сервер базы данных в каталог /etc/krb5. Следует учесть, что время между серверами KDC, сервером базы данных и рабочими станциями пользователей не должно различаться более, чем на величину, определенную в файле $ORACLE_HOME/network/admin/sqlnet.ora параметром SQLNET.KERBEROS5_CLOCKSKEW

Если сервер имен DNS недоступен, необходимо в файле /etc/hosts задать имя сервера и поставить ему в соответствие IP-адрес. Также требуется проверить правильность разрешения имени для сетевого IP-адреса сервера базы данных.

Далее следует создать учетную запись соответствующего пользователя в базе данных (например, user):

Имя пользователя должно содержать только заглавные буквы. Предоставим данному пользователю право инициировать сессию:

и произведем изменение конфигурационных файлов $ORACLE_HOME/network/admin/sqlnet.ora, как показано в листинге 1.

Для настройки клиента Oracle следует создать конфигурационный файл для службы Kerberos, например с:oraclekrb5krb5.conf, содержащий следующую информацию:

Затем добавляем в файл $ORACLE_HOME/network/ admin/sqlnet.ora код, показанный в листинге 2.

На следующем шаге следует проверить соединение с базой данных путем выполнения команды okinit user на клиентской рабочей станции с установленным клиентом ORACLE. При этом вывод команды должен быть приблизительно таким, как показано на рис. 2.

АУТЕНТИФИКАЦИЯ RADIUS

При реализации данного метода на рабочей станции, намеченной для использования в качестве клиента базы данных, был установлен клиент Oracle 9.0.2 с дополнительным набором ASO (Advanced Security Option). На сервере базы данных в качестве операционной системы использовалась Windows Server 2000 SP3 и работал сервер Oracle 9.0.2 Enterprise Edition с ASO. На контроллере домена Windows 2000 помимо службы Active Directory была установлена служба Internet Authentication Services. Служба Internet Authentication Services является реализацией протокола RADIUS компании Microsoft. Таким образом, описанные ниже установки могут быть спроецированы на любую реализацию протокола RADIUS.

На стороне клиента ORACLE файл $ORACLE_HOMENetworkadminsqlnet.ora выглядит так, как показано в листинге 3.

На стороне сервера Oracle были также внесены изменения в файл $ORACLE_HOMENetworkadminsqlnet.ora, отраженные в листинге 4.

В листинге 4 параметр RADIUS_SERVER — это доменное имя (FQDN) сервера, на котором установлена служба Internet Authentication Services

В файл $ORACLE_HOME etworksecurity adius.key был помещен «разделяемый секрет» (shared secret), представляющий собой симметричный пароль на серверном и клиентском компонентах службы RADIUS.

Теперь произведем установку параметров инициализации REMOTE_OS_AUTHENT = FALSE и OS_AUTHENT_PREFIX = ?? путем выполнения следующих команд с консоли SQLPLUS:

Также можно использовать прямое редактирование этих параметров в файле настройки Oracle, в ora.ini. Правильность заданных параметров проверяется путем выполнения команды sqlplus и в консоли SQL следующих команд:

Conn / as sysdba;
Show parameters %AUTH%

При этом вывод выполняемых команд должен совпадать с приведенным ниже:

NAME TYPE VALUE
——————————————
os_authent_prefix string
remote_os_authent boolean FALSE

Настройка службы Internet Authentication Services проводится с консоли управления Microsoft Management Console (MMC). В оснастке Internet Authentication Services создадим новую конфигурацию клиента, как показано на экране 1. Следует отметить, что значение параметра Shared secret и содержимое файла D:oracleora92 etworksecurity adius.key должны совпадать.

Средствами настройки службы Internet Authentication Services создается новая политика доступа для удаленных клиентов, этот процесс отражен на экране 2. В частности, добавляется параметр Client-IP-Address matches со значением, равным IP-адресу сервера базы данных.

В свойствах соединения устанавливается флажок для включения параметра аутентификации Unencrypted Authentication (PAP, SPAP), см. экран 3, причем следует отметить, что без установления данного параметра аутентификация с использованием протокола RADIUS работать не будет. Пользователю домена, для которого предполагается задействовать аутентификацию в базе по протоколу RADIUS, нужно не забыть разрешить удаленную аутентификацию.

Учетная запись пользователя базы данных Oracle создается путем выполнения команд в оболочке Oracle SQLPlus, см. рис. 3.

АУТЕНТИФИКАЦИЯ ПО NTS ORACLE

При реализации метода NTS аутентификация пользователя в базе данных производится незаметно для пользователя, без необходимости дополнительного ввода данных аутентификации. Для реализации этого метода следует установить параметры инициализации

OS_AUTHENT_PREFIX = — (пустая строка)

путем выполнения команд в оболочке SQLPlus:

SQL> alter system set os_authent_prefix=— scope=spfile;
SQL> alter system set remote_os_authentЯLSE scope=spfile;

Опять же сделать это можно и путем прямого редактирования данных параметров в файле настройки Oracle, в ora.ini. Проверяем правильность заданных параметров:

Conn / as sysdba;
Show parameters %AUTH%

При этом вывод выполняемых команд должен совпадать с приведенным ниже:

NAME TYPE VALUE
—————————————————— —————-
os_authent_prefix string
remote_os_authent boolean FALSE

В системный реестр операционной системы сервера требуется добавить параметр HKEY_LOCAL_MACHINE SOFTWAREORACLEHOMEnOSAUTH_PREFIX_DOMAIN со значением TRUE.

Учетная запись пользователя Oracle может быть создана с помощью графической утилиты Oracle Administration Assistant for Oracle. Затем ему назначаются привилегии для доступа к данным, хранящимся в базе данных. Один из шагов процесса создания учетной записи пользователя приведен на экране 4. Обращаем внимание читателей на заголовок окна Create External OS User Wizard. Таким образом уточняется, что учетная запись создается для пользователя только с внешним методом аутентификации NTS.

ЗАКЛЮЧЕНИЕ

Описанные в статье методы могут применяться для аутентификации пользователя в Oracle в гетерогенных сетевых средах. При этом база данных Oracle позволяет не ограничиваться использованием только одного метода, а задействовать набор методов в различных комбинациях. К примеру, при аутентификации пользователя в среде домена Windows 2000 в первую очередь должен применяться метод NTS. Если аутентификация по методу NTS не была успешной, должен быть применен метод RADIUS. Если же и аутентификация по методу RADIUS выполнена не была, необходимо задействовать встроенные механизмы аутентификации пользователей в базе данных Oracle с сохранением данных аутентификации в таблице DBA_USERS.

В целом же не существует метода, который можно было бы охарактеризовать как «лучший» или «худший». Например, метод NTS может использоваться исключительно в окружении Windows, тогда как RADIUS может применяться в гетерогенных средах, зато использование RADIUS влечет за собой некоторые проблемы, связанные с безопасностью (например, требование использования разделяемого секрета). Из недостатков KERBEROS можно упомянуть сложность настройки и невозможность задействовать единую с операционной системой учетную запись. Однако при этом KERBEROS может применяться в гетерогенных средах (Windows, UNIX) и допускает использование единой учетной записи с другими базами данных Oracle.

Oracle оператор CREATE USER создает учетную запись базы данных, которая позволяет войти в базу данных Oracle.

Синтаксис

Синтаксис оператора CREATE USER в Oracle/PLSQL:

CREATE USER user_name
IDENTIFIED < BY password
| EXTERNALLY [ AS 'certificate_DN' ]
| GLOBALLY [ AS '[ directory_DN ]' ]
>
[ DEFAULT TABLESPACE tablespace
| TEMPORARY TABLESPACE
< tablespace | tablespace_group >
| QUOTA integer [ K | M | G | T | P | E ]
| UNLIMITED >
ON tablespace
[ QUOTA integer [ K | M | G | T | P | E ]
| UNLIMITED >
ON tablespace
]
| PROFILE profile_name
| PASSWORD EXPIRE
| ACCOUNT < LOCK | UNLOCK >
[ DEFAULT TABLESPACE tablespace
| TEMPORARY TABLESPACE
< tablespace | tablespace_group >
| QUOTA integer [ K | M | G | T | P | E ]
| UNLIMITED >
ON tablespace
[ QUOTA integer [ K | M | G | T | P | E ]
| UNLIMITED >
ON tablespace
]
| PROFILE profile
| PASSWORD EXPIRE
| ACCOUNT < LOCK | UNLOCK >]
] ;

Параметры и аргументы

user_name
Имя учетной записи базы данных, которую вы хотите создать.

PROFILE profile_name
Необязательный. Это имя профиля, который вы хотите назначить для учетной записи пользователя, чтобы ограничить объем ресурсов базы данных, присвоенных учетной записи пользователя. Если опустить этот параметр, профиль по умолчанию присваивается пользователю.

PASSWORD EXPIRE
Необязательный. Если этот параметр установлен, то пароль должен быть сброшен до того, как пользователь может войти в базу данных Oracle.

ACCOUNT LOCK
Необязательный. Он отключает доступ к учетной записи пользователя.

ACCOUNT UNLOCK
Необязательный. Включает доступ к учетной записи пользователя.

Пример

Если вы хотите, выполнить простой оператор CREATE USER, который создаст нового пользователя и назначит пароль, вы можете сделать следующее:

Когда пользователь подключается к БД, он подключается используя пользовательский аккаунт (user account) указывая имя аккаунта и метод аутентификации. Пользовательский аккаунт определяет первоначальные права доступа и атрибуты сессии. С пользовательским аккаунтам свзязывается схема (schema). Термины пользователь, пользовательский аккаунт и схема часто используется вместо друг друга в окружении Oracle, но это не одно и тоже. Пользователь – это человек который подключается к пользовательскому аккаунту устанавливая сессию к экземпляру БД и авторизуется используя имя аккаунта. Схема – это набор объектов принадлежащих пользовательскому аккаунту и мы рассмотрим детальнее в следующей главе. В зависимости от того как создался аккаунт будут установлены определнные аттрибуты для сесиий, некоторые из которых могут быть изменены позднее, во время существования сессии. Некоторые аккаунты создаются во время создания БД и DBA затем создаёт остальные аккаунты.

В некоторых приложениях, каждый пользователь использует свой аккаунт. Т.е. БД знает кто именно владелец каждой сессии. Такая модель хорошо работает для небольших систем но практически невозможна для среды в которой с БД работают сотник и тысячи пользователей. В больших системах пользователи подключаются к БД используя один аккаунт, и это добавляет сложностей для обеспечения безопаности сессии и аудита БД. Мы будем рассматривать модель где каждый пользователь имеет свой аккаунт.

Аттрибуты пользовательского аккаунта

У аккаунта сущуествует набор аттрибутов которые задаются при создании. Эти значения используются для сессии, и некоторые могут быть изменены либо самой сессией, либо DBA изменит значение во время существования сессии. Этими атрибутами являются

  • Имя
  • Метод аутентификации
  • Табличное пространство по умолчанию
  • Лимит табличного пространтсва
  • Временное табличное пространство
  • Статус

Все эти аттрибуты должны указываться в момент создания аккаунта, несмотря на то что только имя и метод аутентификации являются обязательными а для остальных существуют значения по умолчанию.

Имя аккаунта

Имя аккаунта должно быть уникальным для всей БД и соблюдать определенные правила. Имя аккаунта должно начинаться с буквы, длина не более 30 символов и может состоять только из букв, цифр, знака $ и символа подчёркивания. Также именем аккаунта не может быть зарезервированное слово. Символы чувствительны к регистру но будут автоматически преобразованы к верхнему регистру. Все эти правила (за исключением длинны) можно обойти если использовать имя внутри двойных кавычек, как показано на рисунке 6-1.

51

В первом примере создается аккаунт JOHN. Имя было введено строчными буквами но было преобразовано в прописные как видно в результате выполнения запроса. Второй аккаунт был создан с использованием того же имени и двойных кавычек. Третий и четвертый пример показывают что можно обойти правила неиспользуемых символов и зарезервированных слов используя кавычки.

Имя не может быть изменено после создания. Если необходимо изменить его, то можно удалить старый аккаунт и создать новый. Это критическое действие так как все объекты в схеме аккаунта будут удалены.

Табличные пространтсва по умолчанию и лимиты

У каждого аккаунта есть табличное пространство по умолчанию. Это табличное пространство где создаются объекты схемы (такие как таблицы, индексы) создаваемые этим аккаунтом. Аккаунт может создать объекты (быть владельцем) во всех табличных пространствах к которым у него есть лимит (квота), но если явно не указывать табличное пространтсво при создании объекта – будет использователья табличное пространство аккаунта по умолчанию.

Существует значение по умолчанию для БД которое будет использоваться для всех пользователей созданных без указания табличное пространства. Это значение можно установить во время создания БД или изменить выполнив команду

ALTER DATABASE DEFAULT TABLESPACE tablespace_name ;

Если у БД нет табличного пространства по умолчанию – используется SYSTEM.

На рисунке 6-2 отображено как проверять и устанавливать лимиты

52

Первая команда проверяет представление DBA_USERS и определяет табличные пространства пользователя JOHN. DBA_USERS хранит по одной строке для каждого пользователя БД. Пользователь JOHN получил значения временного и табличного пространства из значения по умолчанию БД (которые видны в результате выполнения запроса к database_properties).

Две команды ALTER USER позволяют аккаунту JOHN использовать 10 МБ пространтсва в табличном пространстве USERS и неограниченный доступ к пространтсву EXAMPLE. Запрос к DBA_TS_QUOTAS отображает затем эту информацию. -1 обозначает неограниченный лимит. Во время выполнения запроса у аккаунта JOHN нет созданных объектов, и поэтому BYTES=0, что значит пространство ещё не используется.

Before you can create a table, you must have both permission to

execute CREATE TABLE and quota on a tablespace in which to create it.

Most users will not need any quotas, because they will never create

objects. They will only have permissions against objects owned by other

schemas. The few object-owning schemas will probably have QUOTA

UNLIMITED on the tablespaces where their objects reside.

Временное табличное пространтсво

Постоянные объекты (такие как таблицы) хранятся в постоянных табличных пространствах; временные объекты хранятся во временном табличном пространстве. Сессии нужно место во временном табличном пространстве если будет использоваться места больше чем доступно в PGA сессии. Операции которым нужно временное место (в памяти если хватает PGA или во временном таблично пространтсве) включают в себя: сортировку строк, объекдинение таблиц, построение индексов и использование временных таблиц. Каждому аккаунту выделяется временное табличное пространство и все пользовательские сессии подключенные к аккаунту будут использовать одно и тоже временное табличное пространство.

Запрос к представлению DBA_USERS на рисунке 6-2 показывает временное пространство пользователя JOHN, которое также является временным табличным простратсвном по умолчанию для БД.

Управление пространством во временных табличных пространствах полностью автоматическое. Объекты создаются и удаляются при необходимости самой БД. Пользователю не нужен лимит на временное таблично пространство, так как все объекты создаются (и он же является владельцем) аккаунтом SYS, у которого неограниченные лимиты для всех табличных пространств.

Users do not need a quota on their temporary tablespace.

Для изменения временного пространства польователя (что затронет все сессии которые подключается в будущем используя этот аккаунт) используйте команду ALTER USER

ALTER USER username TEMPORARY TABLESPACE tablespace_name;

If many users are logging on to the same user account, they will share the

use of one temporary tablespace. This can be a performance bottleneck, which

may be avoided by using temporary tablespace groups.

Профили

Пользовательские профили управляют настройками паролей и позволяют контролировать использование ресурсов. Более детально профили рассмотрим чуть ниже.

Профили полезны для управления паролями и ресурсами но могут использоваться только в среде где у каждого пользователя свой аккаунт. Если много пользователей подключаются к БД под одним аккаунтом, вы не захотите чтобы аккаунт блокировался если ввёл пароль несколько раз один пользователь, потому что этим вы заблокируете доступ всем остальным пользователям. Так же и использование ресурсов часто лучше управлять на уровне сессии а не на уровне аккаунта в целом.

Статус аккаунта

Каждый аккаунт имеет определённый статус, и значение можно увидеть в столбце ACCOUNT_STATUS представления DBA_USERS. Всего существует 9 статусов

  • OPEN – аккаунт готов к использованию
  • LOCKED – DBA заблокировал аккаунт, пользовтель не можед подключиться используя заблокированный аккаунт
  • EXPIRED – Пароль может иметь ограниченное время действия. В данном статусе время действия пароля истекло. Пользователь не может подключиться к аккаунта пока пароль не будет восстановлен
  • EXPIRED & LOCKED – Аккаунт заблокирован и время действия пароля истекло
  • EXPIRED (GRACE) – Пароль можно настроить таким образом чтобы он не становился EXPIRED сразу, а ещё был так называемый grace период, во время которого можно подключиться и изменить пароль
  • LOCKED (TIMED) – это обозначает что аккаунт заблокирвоан в связи с неудачными попытками подключения. Аккаунт можно настроить на автоматическую блокировку на какое-то время после определённого количества неудачных попыток подключения
  • EXPIRED & LOCKED (TIMED)
  • EXPIRED (GRACE) & LOCKED
  • EXPIRED (GRACE) & LOCKED (TIMED)

Для блокировки или разблокирования аккаунта используются команды

ALTER USER username ACCOUNT LOCK;

ALTER USER username ACCOUNT UNLOCK;

Для запроса изменения пароля пользователем при подключении можно выполнить команду

ALTER USER username PASSWORD EXPIRE;

Эта команда автоматически установит грейс пероид, принуждая пользователя изменить пароль при следующей попытке подключения. Нет команды UNEXPIRE. Единственный способ восстановить аккаунт – это изменить пароль.

Методы аутентификации

Аккаунт должен иметь определённый метод аутентификации: что-то что позволяет определить БД есть ли у пользователя пытающегося создать сессию доступ к аккаунту. Самый простой метод это использование пароля который совпадает с паролем хранящемся в БД, но есть и альтернативы. Возможнные варианты это

  • Аутентификация ОС
  • Аутентификация с помощью файла паролей
  • Аутентификация паролем
  • Внешняя аутентификация
  • Глобальная аутентификация

Первые два метода используются только администраторами, последняя требует установленного LDAP сервера.

Аутентификация ОС и файлом паролей

Для разрешения аккаунту использования этих методов аутентификации (эти два типа используется вместе) необходимо назначить аккаунта расширенные права SYSDBA или SYSOPER

GRANT [sysdba|sysoprt] TO username;

Назначение этих прав скопирует пароль аккаунта из словаря данных во внешний файл паролей, откуда он может быть считан экземпляром даже если БД ещё не открыта. Это также позволит экземпляру аутентифицировать пользователей путём проверки принадлежит ли пользователь группе-владельцу программ Oracle. После установки БД единственный аккаунт с этими правами – это SYS.

Для использования файла паролей можно использоуть следующий синтаксис

CONNECT username/password[@db_alias] AS [SYSOPER|SYSDBA];

Аутентификация с помощью файла паролей можно использовать для подключения к удалённой БД используя Oracle Net

Чтобы использовать авторизацию ОС пользователсь должен быть авторизован ОС с доступом к исполняемым файлам Oracle и затем можно выполнить команду

CONNECT / AS [SYSOPER|SYSDBA]

Пароли ОС не хранятся Oracle и поэтому не может быть проблем со сменой пароля.

Эквивалентом этой команды может быть подключения через Database Control при выбранном значении SYSDBA в списке Connect As. Для определения у кого есть пава SYSDBA и SYSOPER можно выполнить запрос к представлению V$PWFILE_USERS. Подключение с использованием аутентифкации файлом паролей или ОС всегда доступно вне зависимости от состояния экземпляра и БД и такой вид подключения необходим для выполнения команд STARTUP и SHUTDOWN.

Третий вид привилегий SYSASM но это выходит за рамки этого курса.

Аутентификация паролем

Синтаксис для подключения используя аутентификацию паролем используя SQL *Plus

Или в Database Control выбрать NORMAL в списке Connect As. Когда подключение происходит используя аутентифкацию паролем, экземпляр проверит пароль в строке подключения с паролем который хранится для этого аккаунта в словаре данных. Для того чтобы был доступен такой метод аутентификации БД должна быть открыта; и используя этот метод невозможно выполнять команды STARTUP и SHUTDOWN.Пользователь SYS не имеет прав подключения используя аутентификацию паролем – только через файл паролей, аутентификацию ОС или LDAP.

Начиная с версии 11g пароли чувствительны к регистру. Пароль хранится именно так как был введён без всяких преобразований регистра.

Когда подключение происходит по сети, 11g всегда использует шифрование перед передачей данных. Для шифрованя данных между пользовательским процессом и серверным процессом необходимо Advanced Security Option, но шифрование пароля включено по умолчанию.

Любой пользователь может изменить пароль аккаунта в любое время, а аккаунт с расширенными правами может изменить пароль любого пользователя. Синтаксис команды

ALTER USER username IDENTIFIED BY password;

Внешняя аутентификация

Если аккаунт был создан с директивой внешней аутентификации, Oracle делегирует аутентифкацию внешнему сервису; т.е. не будет запрошен пароль. Если куплена Advanced Security Option, то внешним сервисом может быть сервер Kerberos, сервер RADIUS или сервис аутентификации Windows. Когда пользователь пытается подключиться к аккаунту, вместо аутентификации пользователя, БД будет разрешать (или не разрешать) подключение в зависимости от того авторизован или пользователь во внешнем сервисе. Например если используется Kerberos – БД проверит существует ли у пользователя валидный Kerberos токен. Без Advanced Security Option – единственно доступной формой внешней аутентификации будет аутентификация ОС. Это требует прав SYSDBA или SYSOPER (как описано выше) но может быть использовано и для обычных аккаунтов. Необходимо создать пользователя Oracle с таким же именем как и аккаунт ОС с префиксом указанном в параметре OS_AUTHENT_PREFIX. По умолчанию значение OPS$. Для проверки значения можно использовать запрос

select value from v$parameter where name=’os_authent_prefix’

В Linux/Unix внешняя аутентификация ОС работает очень просто. Предполагая что значение OS_AUTHENT_PREFIX осталось по умолчанию и есть пользователь ОС с именем jwatson, можно создать пользователя Oracle и дать права подключения следующим образом

create user ops$jwatson identified externally;

grant create session to ops$jwatson;

Пользователь подключенный к ОС как jwatson сможет подключиться к БД выполнив команду

из командной строки ОС и будет подключен к БД как пользователь ops$jwatson.

В Windows обычно используется домен и тогда команда создания пользователя будет вида

Using external authentication can be very useful, but only if the users

actually log on to the machine hosting the database. Users will rarely do this,

so the technique is more likely to be of value for accounts used for running

maintenance or batch jobs.

Глобальная аутентификация

Стандартом для управления идентификацией признано использование LDAP серверов. Под глобальным пользователем (global user) подразумевается пользователь определённый в LDAP директории, и глобальная аутентификация (global authentification) значит делегирование аутентификации пользователя серверам LDAP.

Существует два метода для глобальной аутентификации

  • Пользователи определены в директории LDAP и в БД. Пользователь будет подключаться к БД используя пользовательский аккаунт с таким же именем как и имя пользователя в LDAP
  • Пользователи создаются только в LDAP директории. Все подключения к БД будут созданы используя один аккаунт БД.

Если всё настроено как надо подключение будет создано без запроса пароля.

Создание аккаунтов

У команды CREATE USER всего два обязательных параметра: имя и метод аутентификации. Дополнительно, можно указать табличное пространство по умолчанию и временное табличное пространство, лимиты, профили и команды блокировки аккаута и управления паролем. Пример команды (номера строк добавлены для удобства)

1 create user scott identified by tiger

2 default tablespace users temporary tablespace temp

3 quota 100m on users, quota unlimited on example

4 profile developer_profile

5 password expire

6 account unlock;

Только первая строка обязательна – существуют значения по умолчанию для всего остального. Рассмотрим пример построчно

  • Имя и пароль для аутентификации паролем
  • Табличное пространство по умолчанию и временное табличное пространство
  • Лимиты
  • Профиль для управления паролем и ресурсами
  • Принудительное изменение пароля при первом подключении
  • Аккаунт готов к использованию (команда по умолчанию)

Каждый параметр может быть изменён командой ALTER USER кроме имени. Для смены пароля выполните команду

alter user scott identified by lion;

Смена табличных пространств

alter user scott default tablespace store_data temporary tablespace temp;

alter user scott quota unlimited on store_data, quota 0 on users;

alter user scott profile prod_profile;

Бывает необходимо удалить аккаунт, используется команда

drop user scott;

Эта команда будет выполнена успешно только если у аккаунта нет объектов: схема пуста. Если вы не хотите вначале удалять все объекты пользователя, можно использовать директиву CASCADE

drop user scott cascade;

Для управления пользователя в Database Control из домашней страницы перейдите на вкладку Server и перейдите по ссылке Users в секции Security. В новом окне отобразятся все пользователи остортированные по дате создания. Для сортировки по какому либо столбцу нажмите на заголовок столбца. На рисунке 6-3 отображается окно Database Control

рисунок 6-3 Окно управления пользователя в Database Control

рисунок 6-3 Окно управления пользователя в Database Control

Первый аккаунт на рисунке – PUBLIC. Это формальный пользователь которому необходимо назначить права для применения прав ко всем пользователям. Кнопки CREATE и DELETE позволяют создавать и удалять пользователей.

Для изменения аттрибутов аккаунта можно выделить пользователя и нажать EDIT. Октроется окно Edit User, показанное на рисунке 6-4. Это окно можно использовать для изменения аттрибутов кроме лимитов табличных пространств. Для этого есть отдельное окно. Также здесь можно назначать и удалять права и роли.

Рисунок 6-4 Редактирование аккаунта

Рисунок 6-4 Редактирование аккаунта

Думаю, настало время разобраться с тем как же создаются "схемы" в БД Oracle. Под понятием схема имеется ввиду сам созданный аккаунт или говоря прямо - пользователь БД! Целью создания пользователя как раз и является получение схемы БД, с определенными правами и привилегиями. Создание пользователя в БД Oracle достаточно не сложный, но в тоже время довольно концептуальный момент. Для создания пользователя (схемы), применяется команда DDL - CREATE USER. Она имеет следующий синтаксис:

  • [пользователь] [Username] - Имя пользователя (название схемы).
  • [пароль] [Password] - Пароль для учетной записи.
  • DEFAULT TABLESPACE - Табличное пространство в котором будут находиться создаваемые в данной схеме объекты. Эта настройка не дает пользователю права создавать объекты - здесь устанавливается только значение по умолчанию.
  • TEMPORARY TABLESPACE - Табличное пространство, в котором находятся временные сегменты, используемые в процессе сортировки транзакций.
  • QUOTA - Позволяет пользователю сохранять объекты в указанном табличном пространстве, занимая там место вплоть до определенного в квоте общего размера.

К слову сказать, в чем мы далее и убедимся. Для того, чтобы запросы пользователей могли создавать временные сегменты в табличном пространстве TEMP, им не нужны квоты на дисковое пространство. Попробуем создать пользователя! Запускайте SQL*Plus с пользователем SYS или SYSTEM пароли администраторов смотрите в шаге 5! Из всего выше сказанного, запишем вот такую конструкцию:

Здесь мы создаем пользователя (схему) DUMMY с паролем DUMB и позволяем ему резвится на 100 Мб пространства USERS и еще немного выделяем из пространства TEMP. Получаем в результате:

Ок! Пользователь (схема) создан. Наверное, можно уже подключится и начать создавать объекты! Пробуем!

Именное такой синтаксис подключения можно использовать, он еще называется строка коннекта и расписывается вот так:

Опа! Не повезло! Создание пользователя - это еще не все! Теперь ему нужно разрешить самое основное - создавать сессию с сервером. Сделать это можно командой GRANT. Она достаточно объемная и мы ей займемся чуть позже, а пока восстановим подключение:

Даем пользователю право создавать сессию с сервером:

Вот теперь можно немного перевести дух. Итак, мы создали пользователя, определили ему табличные пространства, назначили квоты на них. И даже позволили создавать сессию с сервером. Давайте убедимся, что пользователь создан и чувствует себя нормально. Производим переконнект на админа БД:

Дадим такой запрос к представлению DBA_USERS:

Кто знаком с криптографией, может на досуге раскусить - E888ADB4D5FFE1B2 или хотя бы провести аналогию с DUMB! Итак, все с нашей схемой в порядке! Осталось только разрешить пользователю создавать объекты БД.

Да, так как оператор GRANT это DDL, то COMMIT вызывается не явно! В данном случае мы разрешили пользователю, создавать такие основные объекты БД как - TABLE, PROCEDURE, TRIGGER, VIEW, SEQUENCE. Для начала этого достаточно. А что делать, если пользователю будет необходимо изменять эти объекты? Тогда нужно добавить еще немного прав, на изменение (ALTER) вот так:

Вот теперь он может не только создавать эти объекты, но и изменять их! А, что если пользователю необходимо будет удалить какой-либо объект или удалить записи из таблиц? Тогда нужно добавить права на удаление объектов БД вот так:

Уфф! Ну вот теперь кажется все! Пользователь действительно полноценный и может работать! Помните в шаге 6 мы с вами это уже проделывали, но тогда я не вдавался в подробности, так как было не до того! А, вот теперь давайте разберемся более детально и продолжим далее.

Основы Oracle 18c - 19c часть 8 - права доступа, роли, учетные записи

Приведем наиболее часто используемые:
CREATE SESSION – право подключения к БД
ALTER DATABASE – право изменения БД
CREATE TABLESPACE – право создавать табличное пространтсво
ALTER TABLESPACE – право изменять табличное пространтсво
DROP TABLESPACE – право удалять табличное пространтсво
CREATE TABLE – право создавать, изменять, удалять таблицы в своей схеме
INSERT ANYTABLE – право добавлять данные в таблиц, которые не принадлежат учетной записи
UPDATE ANYTABLE – право изменять данные в таблиц, которые не принадлежат учетной записи
DELETE ANYTABLE – право удалять данные в таблиц, которые не принадлежат учетной записи
SELECT ANYTABLE – право выборки данных из таблиц, которые не принадлежат учетной записи

Синтаксис назначения прав:
GRANT privilege [,privilege…] TO User_Name;


Пример создания учетной записи (схемы) User_Name
С паролем User_Pass
Разрешаем занимаемое пространство в 10мб. от пространства по умолчанию USERS

CREATE USER User_Name IDENTIFIED BY User_Pass
DEFAULT TABLESPACE USERS QUOTA 10M ON USERS;


Пример, назначение всех основных привилегий для учетной записи:
GRANT CREATE SESSION, ALTER SESSION,
CREATE TABLE, CREATE VIEW, CREATE TRIGGER, CREATE PROCEDURE,
CREATE CLUSTER, CREATE DATABASE LINK,
CREATE SYNONYM, CREATE SEQUENCE, CREATE TYPE, CREATE OPERATOR
TO User_Name ;

В примере выше разрешено подключаться, настраивать сессию, создавать объекты в БД
Создавать объекты разрешено только в схеме аккаунта
Отсутствуют права к схемам других аккаунтов


Пример предоставления табличного пространства USERS по умолчанию для учетной записи User_Name:
ALTER USER User_Name DEFAULT TABLESPACE USERS


Создание ролей, учетных записей, пароля, связь ролей и учетных записей

Предоставление привилегий


Синтаксис:
GRANT privilege ON [schema.]object TO username [WITH GRANT OPTION];


Информация о имеющихся привилегиях


Отмена, удаление привилегий, ролей, четных записей

Читайте также: