DataSunrise is sponsoring RSA Conference2024 in San Francisco, please visit us in DataSunrise's booth #6178

Snowflake Row-Level Security

Snowflake Row-Level Security

Snowflake Row-Level Security

In today’s data-driven world, securing sensitive information is crucial. As more organizations migrate their data to cloud-based data warehouses like Snowflake, implementing robust security measures becomes paramount. One powerful tool in Snowflake’s security arsenal is Row-Level Security (RLS). In this article, we’ll explore the basics of Snowflake Row-Level Security and how it helps protect your data.

What is Row-Level Security?

Row-Level Security protects data by only allowing access to specific rows in a table based on certain conditions. This means that users can see and interact only with the data that they are authorized to access. It provides an additional layer of security by restricting access to sensitive information.

This feature helps organizations control who can view or modify data within their databases. You can control who can see or change specific rows, keeping sensitive data safe. RLS is helpful when different users or groups need access to specific parts of data in one table.

Implementing Row-Level Security in Snowflake

Snowflake, a leading cloud-based data warehouse, provides a comprehensive set of security features, including Row-Level Security. Let’s dive into how RLS works in Snowflake and answer some common questions.

Are there “rows” in Snowflake?

Yes, Snowflake organizes data into tables, which consist of rows and columns. Each row represents a unique record or entry in the table. When implementing RLS, you define policies that determine which rows are accessible to specific users or roles.

For example, you can have structured data in CSV or semi-structured files in Amazon S3 and stage them with Snowflake. Snowflake offers a more organized and efficient method to search and analyze the data with tables. It lets you make tables that point to data in S3, so you can use SQL and Snowflake’s query engine effectively.

Staging Sensitive Data

To leverage Row-Level Security in Snowflake, you need to ensure that sensitive data is properly staged. This involves identifying the columns that contain sensitive information and applying appropriate security measures. Snowflake lets you hide sensitive data using secure views or SQL functions based on user roles or criteria.

You can use column-level security to set rules that filter out sensitive data when setting up your database.

Example using the COPY command:

— Create a table to stage data

CREATE TABLE employee_data (
id INT,
name STRING,
email STRING,
salary DECIMAL

And the staging may look as follows:

-- Stage data from a CSV file, excluding rows where salary exceeds a threshold
COPY INTO employee_data (id, name, email)
FROM 's3://your-bucket/path/to/file.csv'
PATTERN = '.*'
WHERE salary < 100000;

In this example, we are moving data from a CSV file into the employee_data table. Only the id, name, and email columns are being transferred. The WHERE clause filters out rows where the salary exceeds a certain threshold. This prevents staging of the sensitive data.

Masking Data in Specific Rows

Snowflake provides data masking capabilities that allow you to obscure sensitive information in specific rows. By using masking policies, you can replace sensitive data with alternate values or characters, such as asterisks (*) or random numbers. This way, users with restricted access will see masked data instead of the actual sensitive information.


WHEN current_role() IN ('admin', 'manager') THEN val
ELSE '*****'

In this example, a masking policy named mask_email is created. It checks the current user’s role and masks the email addresses with asterisks (*) for users who are not in the ‘admin’ or ‘manager’ roles.

Blocking Access for Certain Users

Snowflake allows you to control access to specific rows based on user roles or other conditions. By creating Row Access Policies (RAPs), you can define rules that determine which users or roles can access certain rows. RAPs are created using SQL expressions and can be applied to tables or views.


current_role() = 'sales_manager' OR
(current_role() = 'sales_rep' AND department = 'sales');

In this example, we create a row access policy named rap_sales. The sales manager can see all rows. The sales rep can only see rows where the department is sales.

When you use RAP with Snowflake, row-level security is applied to all tables and views, even nested ones. You don’t have to repeat policy conditions at each level.

Monitoring Access to Certain Rows

Snowflake provides audit logging capabilities that allow you to monitor access to tables and views. By enabling access logging for a table or view, you can track who accessed the data and when. However, it’s important to note that access logging is not granular enough to track access to specific rows within a table or view.


ALTER TABLE sensitive_data_table

In this example, we have enabled logging for the sensitive_data_table. The system keeps the log information for 30 days. Access logs record who accessed a table and when, but do not show which specific rows the user viewed.

If you want more detailed auditing for each row, you may need to add extra logging to your app. You could also consider using third-party tools like DataSunrise. These tools can track and analyze query patterns and data access more closely.


Snowflake Row-Level Security is a powerful tool for securing your cloud-based data. By implementing RLS, you can ensure that sensitive information is protected and accessible only to authorized users. Snowflake offers tools like data masking and access logging to help you control security settings in a detailed way.

While Snowflake offers built-in security capabilities, managing and configuring these features can be complex. DataSunrise, a leading provider of database security solutions, offers user-friendly and flexible tools for database security, masking, and compliance. With DataSunrise, you can streamline your data warehouse security implementation and ensure comprehensive protection for your Snowflake data warehouse.

To learn more about how DataSunrise can help secure your Snowflake environment, visit our team for an online demo. Our experts will show you how DataSunrise works with Snowflake to enhance security features and benefits.

Don’t compromise on data security. Use Snowflake Row-Level Security and DataSunrise to protect sensitive data and maintain trust with customers and stakeholders.


PostgreSQL Security

PostgreSQL Security

Learn More

Need Our Support Team Help?

Our experts will be glad to answer your questions.

General information:
[email protected]
Customer Service and Technical Support:
Partnership and Alliance Inquiries:
[email protected]