こんにちは。システム本部の@yuu_itoです。
主に弊社のメディアサービスのデータ分析の業務を行っています。
昨今、世間ではセキュリティに関する問題が増加しています!
情報セキュリティにおいて最小権限の原則という用語もあったりしますが、
システムの利用者に本当に必要な権限のみを付与することで
誤った操作を予防したり、外部からの侵入が起きてしまった場合にも
損害を最小限にできるように設計することが大事です。
前回の記事ではBigQueryについて書かれていましたが、
同様のDWH(データウェアハウス)機能を提供するサービスとしてAmazon Redshiftがあります。
今回はRedshiftのデータベースアクセスコントロールの設定方法について調べてみました。
■ データベース
データベースに対する権限設定コマンドは
PostgreSQLや、MySQL同様GRANT、REVOKEコマンドが使えます。 ALLは全権限、CREATEはスキーマ作成、TEMPORARYは一時表を作成する権限です。
テーブルへの SELECT や UPDATE の権限についてはスキーマ単位、テーブル単位で設定する必要があります。
■ スキーマ
MySQLではスキーマとデータベースは同義である(*1)と思いますが、Redshift、PostgreSQLではデータベースの中にスキーマがあり、スキーマの中にテーブルを配置するイメージです。 Redshiftのオブジェクト構成イメージ
スキーマの操作もGRANTコマンドを使います。 PUBLICスキーマについて
Redshiftは各データベースにデフォルトでPUBLICいう名のスキーマが存在し、全てのユーザ(全ユーザはPUBLICグループに所属している)にCREATE権限がついています。書込み権限が不要なユーザも存在すると思うので、REVOKEでCREATE権限を除いておくと良さそうです。
http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_Schemas_and_tables.html
■ テーブル、カラム
テーブルについてもGRANTで個別に設定できます。しかしDBやスキーマのレベルでのみ管理するルールにしておけば、テーブル単位での管理をする必要はなくなるのでDB管理者としては気にすることが減って良さそうです。
カラム単位での操作制限はサポートされていなかったです。
一部のカラム隠蔽したいのであれば、ビュー(View)を作成したり、COPYコマンドでカラムを絞ってロードすることもできます。
また、CREATE TABLE AS(通称CTAS:しーたす)だったりINSERT INTO SELECTを使ってテーブルコピーを作る方法があります。
ビューの場合、テーブルコピーよりもコストが低い反面データベースをまたいだ作成ができないためテーブル、ビュー単位での管理が必要になります。 逆にCTASであればデータベースをまたいで作成することができるので、DBやスキーマのみの管理で済みます。
例えば、個人情報を除いたテーブルを権限を分けた別のデータベースやスキーマに作成すると良さそうです。 スキーマ、テーブルの構成例 CTASのコマンド例
■ ユーザの権限確認方法
データベース、スキーマ、テーブル単位で権限をチェックする関数がありました。
コマンド一発!一覧で確認するようなコマンドがあると期待していたのですが見つからず...
http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_System_information_functions.html
HAS_XX_PRIVILEGEを使って確認できました。
試しに書いてみたクエリをgistに貼っておきます。
https://gist.github.com/yuu-ito/30733a9223e59e32bdb5#file-acl_check-md
■ まとめ
簡単でしたが、Redshiftの操作権限の設定とその方法について調べてみました。今回はDBユーザのセキュリティのみに焦点をあてましたが、実際にはネットワーク構成やデータの元となる運用サービスのデータベースサーバなどの関連システムについても一緒に整理する必要があります。AWSサービスでのシステム構成設計についてはいろんな記事でまとめられているのでそちらを探してみてください。
■ 参考
データベースセキュリティの管理 - Amazon Redshift
http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_Database_objects.html
*1:
http://dev.mysql.com/doc/refman/5.6/en/glossary.html#glos_schema
■ お約束
VOYAGE GROUPでは、一緒に働いてくださる仲間を募集しております。
株式会社VOYAGE GROUP アドテクユニット キャリア採用サイト
株式会社VOYAGE GROUP - 採用
どんな会社か気になる方は、是非下記のサイトもご覧ください。
VOYAGE CULTURE
主に弊社のメディアサービスのデータ分析の業務を行っています。
昨今、世間ではセキュリティに関する問題が増加しています!
情報セキュリティにおいて最小権限の原則という用語もあったりしますが、
システムの利用者に本当に必要な権限のみを付与することで
誤った操作を予防したり、外部からの侵入が起きてしまった場合にも
損害を最小限にできるように設計することが大事です。
前回の記事ではBigQueryについて書かれていましたが、
同様のDWH(データウェアハウス)機能を提供するサービスとしてAmazon Redshiftがあります。
今回はRedshiftのデータベースアクセスコントロールの設定方法について調べてみました。
■ データベース
データベースに対する権限設定コマンドは
PostgreSQLや、MySQL同様GRANT、REVOKEコマンドが使えます。 ALLは全権限、CREATEはスキーマ作成、TEMPORARYは一時表を作成する権限です。
テーブルへの SELECT や UPDATE の権限についてはスキーマ単位、テーブル単位で設定する必要があります。
■ スキーマ
MySQLではスキーマとデータベースは同義である(*1)と思いますが、Redshift、PostgreSQLではデータベースの中にスキーマがあり、スキーマの中にテーブルを配置するイメージです。 Redshiftのオブジェクト構成イメージ
スキーマの操作もGRANTコマンドを使います。 PUBLICスキーマについて
Redshiftは各データベースにデフォルトでPUBLICいう名のスキーマが存在し、全てのユーザ(全ユーザはPUBLICグループに所属している)にCREATE権限がついています。書込み権限が不要なユーザも存在すると思うので、REVOKEでCREATE権限を除いておくと良さそうです。
http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_Schemas_and_tables.html
■ テーブル、カラム
テーブルについてもGRANTで個別に設定できます。しかしDBやスキーマのレベルでのみ管理するルールにしておけば、テーブル単位での管理をする必要はなくなるのでDB管理者としては気にすることが減って良さそうです。
カラム単位での操作制限はサポートされていなかったです。
一部のカラム隠蔽したいのであれば、ビュー(View)を作成したり、COPYコマンドでカラムを絞ってロードすることもできます。
また、CREATE TABLE AS(通称CTAS:しーたす)だったりINSERT INTO SELECTを使ってテーブルコピーを作る方法があります。
ビューの場合、テーブルコピーよりもコストが低い反面データベースをまたいだ作成ができないためテーブル、ビュー単位での管理が必要になります。 逆にCTASであればデータベースをまたいで作成することができるので、DBやスキーマのみの管理で済みます。
例えば、個人情報を除いたテーブルを権限を分けた別のデータベースやスキーマに作成すると良さそうです。 スキーマ、テーブルの構成例 CTASのコマンド例
■ ユーザの権限確認方法
データベース、スキーマ、テーブル単位で権限をチェックする関数がありました。
コマンド一発!一覧で確認するようなコマンドがあると期待していたのですが見つからず...
http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_System_information_functions.html
HAS_XX_PRIVILEGEを使って確認できました。
試しに書いてみたクエリをgistに貼っておきます。
https://gist.github.com/yuu-ito/30733a9223e59e32bdb5#file-acl_check-md
■ まとめ
簡単でしたが、Redshiftの操作権限の設定とその方法について調べてみました。今回はDBユーザのセキュリティのみに焦点をあてましたが、実際にはネットワーク構成やデータの元となる運用サービスのデータベースサーバなどの関連システムについても一緒に整理する必要があります。AWSサービスでのシステム構成設計についてはいろんな記事でまとめられているのでそちらを探してみてください。
■ 参考
データベースセキュリティの管理 - Amazon Redshift
http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_Database_objects.html
*1:
http://dev.mysql.com/doc/refman/5.6/en/glossary.html#glos_schema
■ お約束
VOYAGE GROUPでは、一緒に働いてくださる仲間を募集しております。
株式会社VOYAGE GROUP アドテクユニット キャリア採用サイト
株式会社VOYAGE GROUP - 採用
どんな会社か気になる方は、是非下記のサイトもご覧ください。
VOYAGE CULTURE