Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects...

25
Module 11 Authorizing Users to Access Resources

Transcript of Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects...

Page 1: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Module 11

Authorizing Users to Access Resources

Page 2: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Module Overview

• Authorizing User Access to Objects

• Authorizing Users to Execute Code

• Configuring Permissions at the Schema Level

Page 3: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Lesson 1: Authorizing User Access to Objects

• What Are Principals?

• What Are Securables?

• GRANT, REVOKE, DENY

• Securing Tables and Views

• Column-level Security

• WITH GRANT Option

• Demonstration 1A: Authorizing User Access to Objects

Page 4: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

What Are Principals?

Server Role

SQL Server Login

Windows Group

Domain User Account

Local User Account

SQL ServerSQL Server

DatabaseDatabase

WindowsWindows

SecurablesPermissions

Principals

User

Database Role

Application Role

Page 5: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

What Are Securables?

• Resources that can be secured

• Securables are contained within scopes Server Database Schema

Page 6: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

GRANT, REVOKE, DENY

• GRANT is used to assign a permission

• DENY is used to explicitly deny a permission Used where permissions inherited through group or role

membership

Should only be used in exceptional circumstances

• REVOKE removes either a GRANT or a DENY

Page 7: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Securing Tables and Views

• Several object permissions apply to tables and views SELECT INSERT, UPDATE, DELETE REFERENCES

USE MarketDev;GO

GRANT SELECT ON OBJECT::Marketing.Salesperson TO HRApp;GO

GRANT SELECT ON Marketing.Salesperson TO HRApp;GO

USE MarketDev;GO

GRANT SELECT ON OBJECT::Marketing.Salesperson TO HRApp;GO

GRANT SELECT ON Marketing.Salesperson TO HRApp;GO

Page 8: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Column-level Security

• Permissions can be assigned at the column level

• Multiple column permissions can be assigned in a single statement

• A column-level GRANT overrides a table-level DENY

GRANT SELECT ON Marketing.Salesperson ( SalespersonID, EmailAlias) TO James;GODENY SELECT ON Marketing.Salesperson TO Holly;GOGRANT SELECT ON Marketing.Salesperson ( SalespersonID, FirstName, LastName) TO Holly;GO

GRANT SELECT ON Marketing.Salesperson ( SalespersonID, EmailAlias) TO James;GODENY SELECT ON Marketing.Salesperson TO Holly;GOGRANT SELECT ON Marketing.Salesperson ( SalespersonID, FirstName, LastName) TO Holly;GO

Page 9: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

WITH GRANT Option

• Permissions granted with the WITH GRANT OPTION can be granted to other principals by the grantee

• CASCADE is used to also revoke permissions granted by the grantee Can apply to DENY also

GRANT UPDATE ON Marketing.Salesperson TO James WITH GRANT OPTION;GO

REVOKE UPDATE ON Marketing.Salesperson FROM James CASCADE;GO

GRANT UPDATE ON Marketing.Salesperson TO James WITH GRANT OPTION;GO

REVOKE UPDATE ON Marketing.Salesperson FROM James CASCADE;GO

Page 10: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Demonstration 1A: Authorizing User Access to Objects

• In this demonstration, you will see: How to view the complete list of server principals

How to view the complete list of database principals

How to grant permissions on a table

How to grant permissions at the column level

Page 11: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Lesson 2: Authorizing Users to Execute Code

• Securing Stored Procedures

• Securing User-defined Functions

• Securing Managed Code

• Managing Ownership Chains

• Demonstration 2A: Authorizing Users to Execute Code

Page 12: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Securing Stored Procedures

• Stored procedures require: EXECUTE permission

before they can be called ALTER permission for

modification VIEW DEFINITION for

documentation access

USE MarketDev;GO

GRANT EXECUTE ON Reports.GetProductColors TO Mod11User;GO

USE MarketDev;GO

GRANT EXECUTE ON Reports.GetProductColors TO Mod11User;GO

Page 13: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Securing User-defined Functions

• Users require EXECUTE permission before using scalar UDFs

• Users require SELECT permission for TVFs

• REFERENCES permission is used for CHECK constraints, DEFAULT values or computed columns

GRANT EXECUTE ON dbo.FormatPhoneNumber TO public;GO

GRANT EXECUTE ON dbo.FormatPhoneNumber TO public;GO

Page 14: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Securing Managed Code

• SQL CLR based code has additional permission requirements above those required for T-SQL code

• CLR assemblies are registered with one of three permission sets: SAFE (the default)

EXTERNAL_ACCESS

UNSAFE

• EXTERNAL_ACCESS and UNSAFE permission sets require additional configuration on the database

Page 15: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Managing Ownership Chains

Page 16: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Demonstration 2A: Authorizing Users to Execute Code

• In this demonstration you will see: How to assign permission to execute stored procedures

How to assign permissions for executing functions

Page 17: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Lesson 3: Configuring Permissions at the Schema Level

• Overview of User-schema Separation

• Object Name Resolution

• Granting Permissions at the Schema Level

• Demonstration 3A: Configuring Permissions at the Schema Level

Page 18: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Overview of User-schema Separation

• Schemas Concept changed in SQL Server 2005 No longer equivalent to database users Containers for database objects Created via CREATE SCHEMA Listed by querying sys.schemas view

• Users have default schemas

• Built-in Schemas dbo guest sys INFORMATION_SCHEMA

Page 19: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Object Name Resolution

• If the schema name is omitted, rules apply to how the name will be resolved Each user has a default schema (does not apply to Windows

groups)

Users with no defined default schema will have dbo as their default schema

First search is in the user's default schema

If not found, the dbo schema is searched also

• Whenever referencing an object in a statement, users should specify both the schema and the object name SELECT ProductID FROM Production.Product

Page 20: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Granting Permissions at the Schema Level

• Instead of assigning individual permissions on tables, views, stored procedures, etc. permissions can be granted at the schema level Applicable to all relevant objects within the schema Easier to manage

USE MarketDev;GOGRANT EXECUTE ON SCHEMA::Marketing TO Mod11User;GOGRANT SELECT ON SCHEMA::DirectMarketing TO Mod11User;GO

USE MarketDev;GOGRANT EXECUTE ON SCHEMA::Marketing TO Mod11User;GOGRANT SELECT ON SCHEMA::DirectMarketing TO Mod11User;GO

Page 21: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Demonstration 3A: Configuring Permissions at the Schema Level

• In this demonstration, you will see how to: Revoke permissions on a stored procedure

Assign EXECUTE permission at the schema level

Assign SELECT permission at the schema level

Explore covering or implied permissions.

Page 22: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Lab 11: Authorizing Users to Access Resources

• Exercise 1: Assign Schema-level Permissions

• Exercise 2: Assign Object-level Permissions

• Challenge Exercise 3: Test Permissions (Only if time permits)

Logon information

Estimated time: 45 minutes

Virtual machine 623XB-MIA-SQL

User name AdventureWorks\Administrator

Password Pa$$w0rd

Page 23: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Lab Scenario

You have created the SQL Server logins and Database users and assigned them to appropriate roles. You now need to grant permissions to the database users and roles so that users can access the resources they need within the MarketDev database, based on the supplied security requirements.

Page 24: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Lab Review

• What makes fixed database roles of limited usefulness for most practical security architectures?

• When should permissions be assigned directly to a user?

Page 25: Module 11 Authorizing Users to Access Resources. Module Overview Authorizing User Access to Objects Authorizing Users to Execute Code Configuring Permissions.

Module Review and Takeaways

• Review Questions

• Best Practices