DP-700 · Access Control and Data Masking
31 cards
Warehouse SQL Granular Security
-
Quick check
A team defines column-level security with T-SQL on the SQL analytics endpoint of a lakehouse. A data scientist then reads the same table from a Spark notebook. What applies to the notebook?
AThe same column restriction, because T-SQL security is stored with the table in OneLake
SQL security is not stored with the table. It lives in the SQL engine, and these permissions only apply to queries made through SQL.
BNothing from the SQL definition, because SQL permissions apply only to SQL queries
Right. Security configured through SQL commands applies only to queries made through SQL, so the notebook is not limited by it.
CAn error, because a table with SQL security cannot be read from Spark
Spark is not blocked by a SQL definition. The SQL permissions simply do not apply outside queries made through SQL.
2 / 31
-
Quick check
An engineer runs a `GRANT` on a warehouse table for a colleague who has no workspace role and no item permission. The colleague then tries to connect with the SQL connection string. What happens?
AThe connection fails, because the colleague has no Read permission on the item
Right. A SQL permission does not let the user in. Without Read permission at a minimum, the connection fails.
BThe connection works, and the colleague can query only the granted table
That is the result after the item is shared too. A `GRANT` alone is not enough to connect: the user needs a workspace role or the item Read permission.
CThe `GRANT` fails, because the database user must be created first
The `GRANT` succeeds, and Fabric creates the database user automatically. What is missing is the right to connect.
5 / 31
-
Quick check
A user received `SELECT` on a table through a `GRANT` to the user. The permission must be taken away, but the user must still be able to get it later through a role. Which statement fits?
A`DENY`, because it removes the grant and nothing else
`DENY` does more than remove. It prevents the user from inheriting the permission through role memberships, so a later role would not help.
B`REVOKE`, because it only removes the granted permission
Right. `REVOKE` removes a previously granted or denied permission and leaves nothing behind that could block a role.
C`GRANT` again, because a second grant cancels the first one
A second `GRANT` of the same permission takes nothing away. Granting removes an earlier `DENY`, never an earlier grant.
8 / 31
-
Keep your progress in the app
That’s 3 of 12 quick checks. In the app they stay answered, and every lesson remembers where you left off.
Keep reading hereOpens in your browser. Nothing to install.
Start studying -
Quick check
An admin joins `sys.database_principals` and `sys.database_permissions` to audit a warehouse. A workspace Contributor who reads every table is not in the result. Why?
ABecause the query lists only the users who are connected at that moment
The query does not depend on who is connected. It lists permissions granted explicitly in SQL, and the Contributor's access comes from the workspace role.
BBecause a Contributor has no access to data until a `GRANT` is run
A Contributor reads the warehouse through the workspace role, with no `GRANT`. That is the reason the system views show nothing for this user.
CBecause the query omits permissions that come from a workspace role
Right. This query does not return permissions that users receive through a Fabric workspace role or item.
11 / 31
-
Quick check
A SQL role named Support must read only CustomerID and Email in `Customers`. Which statement is column-level security for this?
A`GRANT SELECT ON Customers TO Support;`
This grants `SELECT` on the whole table, so the role would read every column, CreditCard included.
B`CREATE SECURITY POLICY Support ADD FILTER PREDICATE Customers(CustomerID, Email);`
A security policy filters rows with a predicate function. It does not choose columns, and it does not take a column list in this way.
C`GRANT SELECT ON Customers(CustomerID, Email) TO Support;`
Right. Column-level security is a `GRANT SELECT` with the list of allowed columns after the table name.
14 / 31
-
Quick check
In the predicate function, the condition is `@SalesRep = USER_NAME() OR USER_NAME() = 'manager@contoso.com'`. What does `Sales1@contoso.com` see in the table after the policy is on?
AThe rows whose SalesRep value is Sales1@contoso.com
Right. For this user the first part is true only on rows whose SalesRep value is the user's own name, so only those rows are visible.
BThe rows of every sales representative except the manager
The condition compares the SalesRep of each row with the current user. Rows of other representatives make both parts false and are filtered.
CNo rows, because the second part of the condition is false
The two parts are joined with OR, so one true part is enough. The first part is true on the user's own rows.
16 / 31
-
Quick check
A policy with a filter predicate is on for `sales.Orders`. A sales representative runs a `DELETE` with no `WHERE` clause on the table. What is deleted?
AEvery row of the table, because filter predicates affect only `SELECT`
Filter predicates affect `SELECT`, `UPDATE`, and `DELETE`. The rows of other representatives are filtered, so the statement cannot delete them.
BNothing, because a filter predicate makes the table read-only
The table is not read-only. The user can still change and delete visible rows, and can even insert rows.
CThe rows the representative can see, because filtered rows cannot be deleted
Right. Filter predicates are applied while reading data from the base table, and users cannot delete rows that are filtered.
19 / 31
-
Quick check
A developer has `ALTER ANY SECURITY POLICY` and runs `CREATE SECURITY POLICY` in the `Security` schema. The statement fails for lack of permission. Which permission is the likely gap?
A`ALTER` permission on the schema
Right. Creating or dropping a security policy also requires `ALTER` permission on the schema.
B`UNMASK` permission on the target table
`UNMASK` belongs to dynamic data masking. A security policy needs `REFERENCES` on the target table, not `UNMASK`.
C`EXECUTE` permission on the predicate function
Adding a predicate needs `SELECT` and `REFERENCES` on the function. `EXECUTE` is not in the list.
22 / 31
-
Quick check
A schema-bound security policy on `sales.Orders` passes the SalesRep column to its predicate function. Which change to the table succeeds while the policy exists?
AAltering the SalesRep column, because the binding protects only the function
The binding protects the table too. An attempt to alter the schema of a table bound by a schema-bound security policy results in an error when the column is used by the predicate.
BAltering any column, because a filter predicate works on rows and not on columns
A filter predicate does work on rows, but it reads the SalesRep column to do it. That column is protected while the policy exists.
CAltering a column that the predicate does not reference
Right. Altering the schema of the bound table results in an error, but columns not referenced by the predicate can be altered.
24 / 31
-
Quick check
A report on a lakehouse must keep Direct Lake mode, but SQL security on the SQL analytics endpoint makes its queries fall back. Which option avoids the fallback?
AGrant the readers of the report ReadData on the lakehouse
More permissions do not change the mode. The fallback happens because security is defined in the SQL analytics endpoint that the report is built on.
BBuild the report on a new lakehouse with shortcuts and no SQL security
Right. A new lakehouse with shortcuts to the tables, and with no RLS or OLS defined in SQL, has nothing that forces the fallback.
CAdd the readers of the report to a SQL role on the endpoint
A SQL role is one more piece of SQL security on the same endpoint. The queries keep falling back to DirectQuery mode.
26 / 31
-
Quick check
A warehouse table has a SQL security policy that shows each analyst the rows of one region. Another team reads the same table through a OneLake shortcut in their lakehouse. What might that team see?
AOnly the rows of their region, because the policy follows the data
The policy does not follow the data. It is enforced only within the SQL execution context of the warehouse.
BNothing, because a table with a SQL security policy cannot be a shortcut target
The shortcut works. The problem is the opposite: it gives a path to the data that the SQL policy does not control.
CThe full table, because SQL security is not translated into OneLake security
Right. Through shortcuts, SQL security semantics are not translated into OneLake security policies, so users might see the full warehouse data.
29 / 31
-
Quick check
Which statement about SQL granular security in a Fabric warehouse is correct?
AA filter predicate hides rows from `SELECT` only, so `DELETE` still reaches them
Filter predicates affect `SELECT`, `UPDATE`, and `DELETE`. Only `INSERT` stays allowed for rows that would be filtered.
BA `GRANT` runs for a user who has no database user, and Fabric creates it
Right. You cannot run `CREATE USER`, and Fabric creates the database user automatically when you run `GRANT` or `DENY`.
CMembers of the workspace Admin role are never filtered by a security policy
Security policies apply to all users, including dbo users. An Admin sees all rows only if the predicate is written to allow that.
31 / 31
-
12 quick checks · then the test
In the app, finishing the quick checks opens this lesson’s 10-question test, and the ones you miss come back exactly when you’re about to forget them.
Take this lesson’s test →Opens in your browser. Nothing to install.
Start studying
The whole course, on your computer and your phone
Lessons you can read, audio you can listen to on the way to work, and practice that remembers what you got wrong.
Opens in your browser. Nothing to install.
Start studying“This app is the ‘One Lake’ for preparing the certification exams. Really worth it.”
