부작용에 따른 변화(치명적
3197 단어 Snowflake
Snowflake Advent Calendar 2021 8일째 보도다.
오늘 기사는 부작용이 어떻게 되는지 쓸 거예요.
부작용
Snowflak에 보조 기능이 있습니다.
일반적으로 부작용을 사용할 수 있고 사용자 세션에서 사용자에게 부여된 모든 역할을 사용할 수 있습니다.따라서 사용자는 필요한 작업과 권한에 따라 캐릭터를 바꿀 필요가 없고, 주 역할과 부작용에 부여된 집합 권한을 사용하여 세션의 대상에게 SQL 동작을 수행할 수 있다.이용하면 안전모델에 여러 역할을 하는 조직을 위주로 여러 조직에서 직무관리를 간소화할 수 있다.그 밖에 교차 데이터베이스, 예를 들어 모든 데이터베이스에서 대상에 대한 접근 권한이 서로 다른 작용을 한다.Pinterst사의 부작용 활용법에 관해서는'What's New:Snowflake의 안전성'을 보십시오.
한 마디로 하면 이 기능은 사용자와 관련된 모든 캐릭터를 동시에 사용할 수 있는 기능이다.
문장에서 집합 권한이라는 단어로 표시하다.
언뜻 보기에는 부작용이라는 이름
USE ROLE
이기 때문에 그 역할에 부작용을 하나 더 넣어야 하나?이렇게 생각하는 사람이 많으니 주의하세요.그 실제 상황은 사용자와 관련된 모든 역할을 동시에 수행할 수 있는 기능이다.부작용 이전의 세계
■ 架空のストーリー
社員XさんはBIやデータ分析を主に行うユーザXを使っています。
A社から委託されているデータの分析と、B社から委託されているデータの分析を行うので
それぞれAロールと、BロールをGRANTされています。
もちろんA社とB社は別の会社であるため、JOINなどで紐付けることは禁止されています。
Snowflakeの管理者であるあなたは、XさんにAロールと、Bロールを渡して安心しています。
なぜなら、セッション内ではロールが同時に複数行使されることはなく、
A社のデータとB社のデータは絶対にJOINできないのですから…。
어때요?너는 상술한 상황이 있다고 생각하지 않니?
물론 CSV 등으로 데이터를 다운로드하면 로컬에서 A사 데이터와 B사 데이터를 연계할 수 있다.
하지만 부작용 이전의 세계에서는 적어도 스노우플랙에서는 할 수 없다.
부작용 후의 세계
부작용을 사용하면 권한을 가로지르는 표를 쉽게 참고할 수 있다는 점에 주목한 사람이 있을 것 같다.
예를 들어 아까의 예에서 할 수 있다
SELECT * FROM A社のテーブル, B社のテーブル;
.이는 이전 세계에서는 권한 등급이 높은 캐릭터만 할 수 있었다.
실제로 해 보다
A, B 볼륨을 만들어 각각 A, B 테이블에 GRANT를 얹는다.
A권
show tables;
으로 만든 곳.B권
show tables;
의 곳이렇게 각 캐릭터가 참조할 수 있는 테이블이 다르죠?
이 상태
select * from A,B;
에서도 다음과 같은 권한 오류가 발생합니다.부작용 이전의 행동이다.
그럼 부작용을 사용해 보세요.(이 기능은 모든 사용자에게 적용됩니다.
USE SECONDARY ROLES ALL;
그리고 방금 틀린 것을 실행해 보세요select * from A,B;
.이번 실행은 성공했군.
지금까지의 권한 등급 설계가 취약하게 무너진 순간이었다.
그럼 어떡하지?
현재 Snowflake의 기능 중 가장 골치 아픈 기능은 바로 이 부작용이다.
나는 가장 좋은 실천 방법을 생각해 내지 못하겠다.
나는 누군가가 단순히 모르고 좋은 해결 방안을 가지고 있을지도 모른다고 생각한다.
오시면 꼭 알려주세요.
Reference
이 문제에 관하여(부작용에 따른 변화(치명적), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/foursue/items/7d6725411d4663f3a59c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)