Управление доступом к базе данных. Пользователи базы данных Oracle и схемы. Аутентификация в СУБД Oracle и SQL Server, страница 5

привилегия – системная привилегия (ALL – все системные привилегии)

пользователь (роль)  – имя пользователя или роли, которым дается привилегия

PUBLIC – привилегия дается всем пользователям (только Oracle)

WITH ADMIN OPTION – разрешает предоставлять полученную системную привилегию другим пользователям (только Oracle)

Предоставление объектных привилегий

GRANT {привилегия[, привилегия …] | ALL} [(столбец[, столбец …])] ON объект
TO {пользователь[, пользователь …] | роль | PUBLIC} [WITH GRANT OPTION]

привилегия – объектная привилегия (ALL – все привилегии на объект)

столбец – столбец таблицы или представления, на который дается привилегия

объект – объект, на который дается привилегия

пользователь (роль)  – имя пользователя или роли, которым дается привилегия

PUBLIC – привилегия дается всем пользователям (только Oracle)

WITH GRANT OPTION – позволяет передавать привилегию на объект другим пользователям

Отмена привилегий

Для отмены привилегий используется SQL команда REVOKE.

Отмена системных привилегий:

REVOKE {привилегия[, привилегия …] | ALL}
FROM {пользователь[, пользователь …] | роль | PUBLIC}

привилегия – объектная привилегия (ALL – все системные привилегии)

пользователь (роль) – имя пользователя или роли, чьи привилегии отменяются

PUBLIC – привилегия отменяется у всех пользователей (только Oracle)

Отмена объектных привилегий:

REVOKE {привилегия[, привилегия …] | ALL} [(столбец[, столбец …])] ON объект
FROM {пользователь[, пользователь …] | роль | PUBLIC} [CASCADE]

привилегия – объектная привилегия (ALL – все привилегии на объект)

столбец – столбец таблицы или представления, на который дается привилегия

объект – объект, привилегия на который отменяется

пользователь (роль) – имя пользователя или роли, чьи привилегии отменяются

PUBLIC – привилегия отменяется у всех пользователей (только Oracle)

CASCADE – привилегия отменяется, также, у всех пользователей, которым она была предоставлена в режиме WITH GRANT OPTION (только SQL Server)

Каскадная отмена привилегий

В СУБД Oracle:

  • Системные привилегии, предоставленные в режиме WITH ADMIN OPTION, не удаляются при отмене системной привилегии.
  • Объектные привилегии, предоставленные в режиме WITH GRANT OPTION, тоже будут отменены.

В SQL Server:

·  Чтобы каскадно отменить объектные привилегии, предоставленные в режиме WITH GRANT OPTION, необходимо использовать ключевое слово CASCADE.

Управление привилегиями через роли

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

Администратор базы данных создает роль, определяет набор привилегий для роли и присваивает роль пользователям:

Oracle

SQL Sever

Создать роль

CREATE ROLE роль

sp_addrole

[@rolename =] 'роль'

Предоставить роли системные привилегии

GRANT {привилегия[, привилегия …] | ALL} TO роль
[WITH ADMIN OPTION]

GRANT {привилегия[, привилегия …] | ALL} TO роль

Предоставить роли объектные привилегии

GRANT {привилегия[, привилегия …] | ALL} [(столбец[, столбец …])] ON объект TO роль [WITH GRANT OPTION]

Отменить у роли системные привилегии

REVOKE {привилегия[, привилегия …] | ALL} FROM роль

Отменить у роли объектные привилегии

REVOKE {привилегия[, привилегия …] | ALL} [(столбец[, столбец …])] ON объект FROM роль

REVOKE {привилегия[, привилегия …] | ALL} [(столбец[, столбец …])] ON объект
FROM роль [CASCADE]

Предоставить роль пользователю

GRANT роль
TO {пользователь | PUBLIC}
[WITH ADMIN OPTION]

sp_addrolemember

[@rolename =] 'роль',

[@membername =] 'учетная_запись'

Отменить роль у пользователя (удалить члена роли)

REVOKE роль
FROM {пользователь | PUBLIC}

sp_droprolemember

[@rolename =] 'роль',

[@membername =] 'учетная_запись'

Удалить роль

DROP ROLE роль

sp_droprole

[@rolename =] 'роль'

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

Нельзя удалить роль, пока не будут удалены все члены этой роли

Например, в СУБД Oracle можно создать роль sample, предоставить этой роли право создавать таблицы и представления в собственной схеме, и, затем, предоставить эту роль пользователю student.

SQL> CREATE ROLE sample;

Role created.

SQL> GRANT CREATE TABLE, CREATE VIEW TO sample;

Grant succeeded.

SQL> GRANT sample TO student;

Grant succeeded.

Домен безопасности Oracle

Защита базы данных Oracle, кроме предотвращения несанкционированного и неавторизованного доступа, предполагает контроль использования пользователями дискового пространства и системных ресурсов (например, центрального процессора). Для этого СУБД Oracle использует управление параметрами хранения пользовательскими объектами и квотами на использование табличных пространств. Назначив пользователю определенный профиль, администратор может ограничить использование системных ресурсов.

Параметры хранения и квоты

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

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

Табличное пространство по умолчанию предоставляет серверу базы данных информацию о том, какое пространство использовать для хранения объекта, если это не определено при создании этого объекта. Когда пользователь создает таблицу, индекс или кластер, и не задает явно табличное пространство, в котором будет храниться объект, для хранения объекта используется табличное пространство по умолчанию этого пользователя, если, конечно, пользователь имеет привилегию создавать объекты в собственной схеме и квоту на использование табличного пространства по умолчанию.

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

Каждый пользователь имеет временное табличное пространство. Если пользователь выполняет SQL утверждение, которое требует создания временных сегментов (например, создание индекса), используется временное табличное пространство этого пользователя.