{"id":5801,"date":"2024-11-18T10:28:31","date_gmt":"2024-11-18T01:28:31","guid":{"rendered":"https:\/\/blog.since2020.jp\/?p=5801"},"modified":"2024-11-18T10:29:15","modified_gmt":"2024-11-18T01:29:15","slug":"snowflake-mask","status":"publish","type":"post","link":"https:\/\/since2020.jp\/media\/snowflake-mask\/","title":{"rendered":"Snowflake\u3067\u9867\u5ba2\u30a2\u30c9\u30ec\u30b9\u3092\u30de\u30b9\u30ad\u30f3\u30b0\u3059\u308b\u65b9\u6cd5"},"content":{"rendered":"\n<p>\u6a5f\u5bc6\u60c5\u5831\u3092\u4fdd\u8b77\u3057\u3064\u3064\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u7279\u5b9a\u306e\u30e6\u30fc\u30b6\u30fc\u3060\u3051\u304c\u30c7\u30fc\u30bf\u3092\u95b2\u89a7\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u3001Snowflake\u306e\u30c0\u30a4\u30ca\u30df\u30c3\u30af\u30c7\u30fc\u30bf\u30de\u30b9\u30ad\u30f3\u30b0\u6a5f\u80fd\u3092\u4f7f\u3063\u3066\u9867\u5ba2\u30a2\u30c9\u30ec\u30b9\u3092\u30de\u30b9\u30ad\u30f3\u30b0\u3059\u308b\u65b9\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002\u3053\u306e\u8a2d\u5b9a\u306b\u3088\u308a\u3001\u7279\u5b9a\u306e\u30ed\u30fc\u30eb\u3092\u6301\u305f\u306a\u3044\u30e6\u30fc\u30b6\u30fc\u306b\u306f\u30de\u30b9\u30ad\u30f3\u30b0\u3055\u308c\u305f\u30c7\u30fc\u30bf\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n<h2>\u306f\u3058\u3081\u306b<\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif\">\u6a5f\u5bc6\u60c5\u5831\u3092\u4fdd\u8b77\u3057\u3064\u3064\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u7279\u5b9a\u306e\u30e6\u30fc\u30b6\u30fc\u3060\u3051\u304c\u30c7\u30fc\u30bf\u3092\u95b2\u89a7\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u3001Snowflake\u306e\u30c0\u30a4\u30ca\u30df\u30c3\u30af\u30c7\u30fc\u30bf\u30de\u30b9\u30ad\u30f3\u30b0\u6a5f\u80fd\u3092\u4f7f\u3063\u3066\u9867\u5ba2\u30a2\u30c9\u30ec\u30b9\u3092\u30de\u30b9\u30ad\u30f3\u30b0\u3059\u308b\u65b9\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002\u3053\u306e\u8a2d\u5b9a\u306b\u3088\u308a\u3001\u7279\u5b9a\u306e\u30ed\u30fc\u30eb\u3092\u6301\u305f\u306a\u3044\u30e6\u30fc\u30b6\u30fc\u306b\u306f\u30de\u30b9\u30ad\u30f3\u30b0\u3055\u308c\u305f\u30c7\u30fc\u30bf\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/span><!-- notionvc: ab9b0ca8-3935-40ca-a84b-1696053822f6 --><\/p>\n\n<h2>Step 1: \u30de\u30b9\u30ad\u30f3\u30b0\u30dd\u30ea\u30b7\u30fc\u306e\u4f5c\u6210<\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif\">\u307e\u305a\u3001\u9867\u5ba2\u30a2\u30c9\u30ec\u30b9\uff08\u4f8b\u3048\u3070<code>customer_address<\/code>\u5217\uff09\u3092\u30de\u30b9\u30ad\u30f3\u30b0\u3059\u308b\u305f\u3081\u306e\u30dd\u30ea\u30b7\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u3053\u306e\u30dd\u30ea\u30b7\u30fc\u3067\u306f\u3001<code>ALLOWED_ROLE<\/code>\u3068\u3044\u3046\u30ed\u30fc\u30eb\u3092\u6301\u3064\u30e6\u30fc\u30b6\u30fc\u3060\u3051\u304c\u5b9f\u969b\u306e\u30a2\u30c9\u30ec\u30b9\u3092\u95b2\u89a7\u3067\u304d\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/span><\/p>\r\n<div class=\"hcb_wrap\">\r\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>CREATE OR REPLACE MASKING POLICY address_mask_policy AS (val STRING) RETURNS STRING -&gt;\r\nCASE\r\nWHEN CURRENT_ROLE() IN ('ALLOWED_ROLE') THEN val\r\nELSE '********'\r\nEND;<\/code><\/pre>\r\n<\/div>\r\n<p><span style=\"font-family: arial, helvetica, sans-serif\">\u4e0a\u8a18\u306e\u30af\u30a8\u30ea\u3067\u306f\u3001<span data-token-index=\"1\" class=\"notion-enable-hover\">ALLOWED_ROLE<\/span>\u30ed\u30fc\u30eb\u304c\u5272\u308a\u5f53\u3066\u3089\u308c\u3066\u3044\u306a\u3044\u30e6\u30fc\u30b6\u30fc\u304c<span data-token-index=\"3\" class=\"notion-enable-hover\">customer_address<\/span>\u5217\u3092\u30af\u30a8\u30ea\u3059\u308b\u3068\u3001<span data-token-index=\"5\" class=\"notion-enable-hover\">&#8216;********&#8217;<\/span>\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/span><!-- notionvc: 8598eff2-80ff-4cae-b6e4-3d58026efd59 --><\/p>\r\n<p><!-- notionvc: 04420bfc-02df-40bc-9eca-96673e167718 --><\/p>\n\n<h2>Step 2: \u30c6\u30fc\u30d6\u30eb\u3068\u30c7\u30fc\u30bf\u306e\u6e96\u5099<\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif\">\u6b21\u306b\u3001\u30c6\u30b9\u30c8\u7528\u306e\u9867\u5ba2\u30c7\u30fc\u30bf\u3092\u542b\u3080\u30c6\u30fc\u30d6\u30eb\u3092\u4f5c\u6210\u3057\u3001\u9867\u5ba2\u30a2\u30c9\u30ec\u30b9\u306e\u30c7\u30fc\u30bf\u3092\u633f\u5165\u3057\u307e\u3059\u3002<\/span><!-- notionvc: f49c03b9-b014-4fc1-b7d6-8349a61382b5 --><\/p>\r\n<div class=\"hcb_wrap\">\r\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>CREATE OR REPLACE TABLE customer_data (\r\ncustomer_id INT,\r\ncustomer_name STRING,\r\ncustomer_address STRING\r\n);\r\n\r\nINSERT INTO customer_data (customer_id, customer_name, customer_address) VALUES\r\n(1, '\u7530\u4e2d \u592a\u90ce', '123 Tokyo St'),\r\n(2, '\u9234\u6728 \u6b21\u90ce', '456 Osaka Ave'),\r\n(3, '\u4f50\u85e4 \u82b1\u5b50', '789 Kyoto Rd');<\/code><\/pre>\r\n<\/div>\r\n<p>&nbsp;<\/p>\r\n<p>&nbsp;<\/p>\n\n<h2>Step 3: \u30de\u30b9\u30ad\u30f3\u30b0\u30dd\u30ea\u30b7\u30fc\u306e\u9069\u7528<\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif\">\u4f5c\u6210\u3057\u305f<span data-token-index=\"1\" class=\"notion-enable-hover\">address_mask_policy<\/span>\u3092<span data-token-index=\"3\" class=\"notion-enable-hover\">customer_address<\/span>\u5217\u306b\u9069\u7528\u3057\u307e\u3059\u3002<!-- notionvc: 98d215b9-77c0-4997-af1a-9dc212774bc6 --><\/span><\/p>\r\n<div class=\"hcb_wrap\">\r\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>ALTER TABLE customer_data MODIFY COLUMN customer_address SET MASKING POLICY address_mask_policy;<\/code><\/pre>\r\n<\/div>\r\n<p><span style=\"font-family: arial, helvetica, sans-serif\">\u3053\u308c\u3067\u3001\u30de\u30b9\u30ad\u30f3\u30b0\u30dd\u30ea\u30b7\u30fc\u304c\u9867\u5ba2\u30a2\u30c9\u30ec\u30b9\u306b\u9069\u7528\u3055\u308c\u3001<span data-token-index=\"1\" class=\"notion-enable-hover\">ALLOWED_ROLE<\/span>\u4ee5\u5916\u306e\u30e6\u30fc\u30b6\u30fc\u306b\u306f\u30de\u30b9\u30af\u3055\u308c\u305f\u30a2\u30c9\u30ec\u30b9\u304c\u8868\u793a\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/span><!-- notionvc: 2e5bb888-57a0-4143-87ce-19e50d7e6708 --><\/p>\r\n<p>&nbsp;<\/p>\n\n<h2>Step 4: \u52d5\u4f5c\u78ba\u8a8d<\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif\">\u6700\u5f8c\u306b\u3001\u30ed\u30fc\u30eb\u306b\u3088\u308b\u30c7\u30fc\u30bf\u8868\u793a\u306e\u9055\u3044\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/span><\/p>\r\n<p><span style=\"font-family: arial, helvetica, sans-serif\">1.<strong><code>ALLOWED_ROLE<\/code>\u30ed\u30fc\u30eb\u3092\u6301\u3064\u30e6\u30fc\u30b6\u30fc<\/strong>\u304c\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3057\u305f\u5834\u5408\uff1a<\/span><\/p>\r\n<div class=\"hcb_wrap\">\r\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>SET ROLE ALLOWED_ROLE;\r\nSELECT * FROM customer_data;<\/code><\/pre>\r\n<\/div>\r\n<p><span style=\"font-family: arial, helvetica, sans-serif\"><span data-token-index=\"0\" class=\"notion-enable-hover\">\u7d50\u679c<\/span><!-- notionvc: 7a938788-cfc1-467e-8f13-8bdf33910475 --><\/span><\/p>\r\n<div class=\"hcb_wrap\">\r\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>| customer_id | customer_name | customer_address |\r\n|-------------|---------------|------------------|\r\n| 1 | \u7530\u4e2d \u592a\u90ce | 123 Tokyo St |\r\n| 2 | \u9234\u6728 \u6b21\u90ce | 456 Osaka Ave |\r\n| 3 | \u4f50\u85e4 \u82b1\u5b50 | 789 Kyoto Rd |<\/code><\/pre>\r\n<\/div>\r\n<p><span style=\"font-family: arial, helvetica, sans-serif\"><span data-token-index=\"0\" class=\"notion-enable-hover\">2.\u4ed6\u306e\u30ed\u30fc\u30eb\u3092\u6301\u3064\u30e6\u30fc\u30b6\u30fc<\/span>\u304c\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3057\u305f\u5834\u5408\uff1a<!-- notionvc: 796cc8f4-8e96-4288-aaa5-db092d121685 --><\/span><\/p>\r\n<div class=\"hcb_wrap\">\r\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>SET ROLE OTHER_ROLE;\r\nSELECT * FROM customer_data;<\/code><\/pre>\r\n<\/div>\r\n<p><span style=\"font-family: arial, helvetica, sans-serif\"><span data-token-index=\"0\" class=\"notion-enable-hover\">\u7d50\u679c<\/span><!-- notionvc: 5356201a-f8d2-423a-afbe-8cffa401f752 --><\/span><\/p>\r\n<div class=\"hcb_wrap\">\r\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>| customer_id | customer_name | customer_address |\r\n|-------------|---------------|------------------|\r\n| 1 | \u7530\u4e2d \u592a\u90ce | ******** |\r\n| 2 | \u9234\u6728 \u6b21\u90ce | ******** |\r\n| 3 | \u4f50\u85e4 \u82b1\u5b50 | ******** |<\/code><\/pre>\r\n<\/div>\r\n<p><!-- notionvc: 07737987-ef55-405c-8ffe-7e33f37c9051 --><\/p>\n\n<h2>\u6700\u5f8c\u306b<\/h2>\n<p><span style=\"font-family: arial, helvetica, sans-serif\">Snowflake\u306e\u30c0\u30a4\u30ca\u30df\u30c3\u30af\u30c7\u30fc\u30bf\u30de\u30b9\u30ad\u30f3\u30b0\u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u30b7\u30f3\u30d7\u30eb\u306a\u8a2d\u5b9a\u3067\u6a5f\u5bc6\u60c5\u5831\u306e\u4fdd\u8b77\u304c\u53ef\u80fd\u3067\u3059\u3002\u4eca\u56de\u306e\u4f8b\u3067\u306f\u3001SQL\u30af\u30a8\u30ea\u3092\u4f7f\u3063\u3066\u30de\u30b9\u30ad\u30f3\u30b0\u30dd\u30ea\u30b7\u30fc\u3092\u4f5c\u6210\u3057\u3001\u6307\u5b9a\u306e\u5217\u306b\u9069\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30ed\u30fc\u30eb\u306b\u5fdc\u3058\u3066\u30c7\u30fc\u30bf\u3092\u52d5\u7684\u306b\u30de\u30b9\u30ad\u30f3\u30b0\u3059\u308b\u65b9\u6cd5\u3092\u7d39\u4ecb\u3057\u307e\u3057\u305f\u3002<\/span><!-- notionvc: 7d4283b0-abb8-496e-86f2-381c6d8abae2 --><\/p>","protected":false},"excerpt":{"rendered":"<p>\u6a5f\u5bc6\u60c5\u5831\u3092\u4fdd\u8b77\u3057\u3064\u3064\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u7279\u5b9a\u306e\u30e6\u30fc\u30b6\u30fc\u3060\u3051\u304c\u30c7\u30fc\u30bf\u3092\u95b2\u89a7\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u3001Snowflake\u306e\u30c0\u30a4\u30ca\u30df\u30c3\u30af\u30c7\u30fc\u30bf\u30de\u30b9\u30ad\u30f3\u30b0\u6a5f\u80fd\u3092\u4f7f\u3063\u3066\u9867\u5ba2\u30a2\u30c9\u30ec\u30b9\u3092\u30de\u30b9\u30ad\u30f3\u30b0\u3059\u308b\u65b9\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002\u3053\u306e\u8a2d\u5b9a\u306b\u3088\u308a\u3001\u7279\u5b9a\u306e\u30ed\u30fc [&hellip;]<\/p>\n","protected":false},"author":87,"featured_media":5509,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","swell_btn_cv_data":"","footnotes":"","_wp_rev_ctl_limit":""},"categories":[1246],"tags":[216,777],"class_list":["post-5801","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-infrastructure","tag-snowflake","tag-777"],"_links":{"self":[{"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/posts\/5801","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/users\/87"}],"replies":[{"embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/comments?post=5801"}],"version-history":[{"count":0,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/posts\/5801\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/media\/5509"}],"wp:attachment":[{"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/media?parent=5801"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/categories?post=5801"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/tags?post=5801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}