AWS Redshiftのセキュリティ対策
AWS Redshiftは、高速かつ完全に管理されたペタバイト規模のデータウェアハウスサービスです。Amazon Quicksight、MicrosoftのPower BI、Tableauなどのビジネスインテリジェンスツールを使用して、より費用対効果の高い方法でデータの保存と分析を可能にします。
本記事では、AWS Redshiftで利用可能な様々なセキュリティ機能と、それらを活用してデータを保護し不正アクセスを防止する方法についてご説明いたします。どうぞ最後までお読みください。
Redshiftセキュリティの重要性
Redshiftをご利用いただくことで、組織は機密データを保護することが可能となります。セキュリティが不可欠であることに加え、Redshiftをご利用のお客様には驚くべき点がございます。それは、Amazon Redshiftがすべてのセキュリティ機能を追加費用なしで提供しているという点です。これらの機能は、最も厳しいセキュリティ、プライバシー、コンプライアンス要件を満たします。
Redshiftセキュリティは以下の機能をサポートしております:
- 多要素認証
- Amazon VPC上での詳細なアクセス制御
- シングルサインオンのための組み込みのID管理およびフェデレーション。
Redshiftがサポートするその他の機能には以下が含まれます:
- Redshiftデータウェアハウスクラスターは、Amazon VPCを使用してプライベート仮想ネットワークに分離することができ、外部からの攻撃からデータを保護します。
- データウェアハウスへのネットワークアクセスを制限することで、セットアップ時にファイアウォール設定が不可欠である理由が十分に理解できます。
- 認証要求のためのAmazonのIAMの使用。
- Amazonは最近、ロールベースのアクセス制御(RBAC)を導入しました。この機能によりセキュリティ権限が簡素化され、エンドユーザーのデータアクセスも制御されます。
- Amazon CloudTrailは、Redshiftを含むAWSインフラストラクチャ全体のアカウント活動を監視・記録します。したがって、監査や分析に容易に利用可能なログとして、以下のすべての操作を記録します:
- データウェアハウスへの変更
- 接続試行
- データウェアハウスへのクエリ
- Redshiftは動的データマスキングを活用し、クエリ実行時に個人情報データを選択的にマスキングいたします。
Redshiftにおけるセキュリティ対策
前述の通り、Amazon Redshiftのすべてのセキュリティ機能は追加費用なしでご利用いただけます。主な機能は以下の通りです:
- 暗号化
- ユーザー認証
- ネットワークセキュリティ
保存データの暗号化
Amazon Redshiftでは、保存中のデータは暗号化によって保護されます。Redshiftでは、ユーザーデータがデータセンターに書き込まれる際に暗号化し、ユーザーが適切なリクエスト認証とアクセス権限をもって読み取る際に復号化することをオプションで選択できます。この保存中のデータの暗号化はすべてサーバー側で行われます。
クライアントサイド暗号化もRedshiftが提供する機能の一つです。ユーザーはデータをシステムにロードする前に暗号化し、取得後に復号することが可能です。Amazon S3からロードされたデータにはSSE-S3暗号化を、またはAWS Key Management Service(KMS)で管理される顧客管理暗号化キー(CMEK)を利用できます。
転送中のデータの暗号化
転送中のデータとは、Amazon DynamoDBやAmazon Simple Storage Service(Amazon S3)におけるCOPYやUNLOADといったコマンド、あるいはバックアップや復元といった操作によって定義されます。AWSクラウド内で転送中のこのようなデータに対して、Amazon Redshiftはハードウェアアクセラレーション対応のSSL(Secure Sockets Layer)を用いて通信を中継します。SSLはインターネット接続を安全に保ち、ノード間の暗号化リンクを確立することで機密データを保護します。
アクセス制御とユーザー認証
先述の通り、AWSの製品(Redshiftを含む)をご利用いただくには、AWSへのサインアップが前提となります。リソースを作成したAWSアカウントは「リソース所有者」と呼ばれます。これはルートアカウント、すなわちIAMユーザーであり、リソース作成リクエストの認証も行います。ただし、作成されたリソース自体は、メインエンティティのAWSアカウントが所有します。
このような管理権限により、ユーザーはリクエストの認証だけでなく、クラスターの作成や権限の委任といったその他の管理タスクも実行できます。権限の委任により、ユーザーは別のAWSアカウントのAmazon Redshiftクラスターを作成、削除、変更、再起動することが可能となります。
以下に例を示します:

一方、Amazon Redshiftデータストレージへの接続は、不正アクセスからデータを保護するため、ユーザー認証情報による認証が必須となります。接続認証時の主な要件は以下の通りです:
- ホスト
- ポート
- データベース
- アクセスキーID
- シークレットアクセスキー
ネットワークセキュリティとファイアウォールの設定
最も基本的なレベルでは、ネットワークセキュリティにはネットワークファイアウォールの設定が含まれます。ファイアウォールは、ネットワーク内の入出トラフィックを監視、検査、フィルタリングします。クラウドサービスプロバイダーとして、Amazonはネットワークトラフィックを細かく制御できるファイアウォールルールを作成できることを最優先に考えております。
AWS Network FirewallはAWS Firewall Managerと連携し、ポリシーを構築してAWSアカウントやVPC全体で利用できるようにします。AWS Firewallは、VPCの境界でトラフィックをフィルタリングすることを可能にします。
AWS Firewall Managerは複数のAWS Network Firewallデプロイメントを管理します。VPCとAWS Network Firewallの重要な関係として、ゲートウェイを介してVPCに出入りするすべてのリクエストはAWS Network Firewallを経由してルーティングされる点が挙げられます。ファイアウォールを作成する際の留意点を以下にご説明いたします:
- 保護対象のVPCを選択し、使用する保護機能を指定したファイアウォールポリシーにリンクします。
- ファイアウォールエンドポイントを配置するサブネットと、保護対象となる各アベイラビリティゾーンのサブネットを選択します。
- ファイアウォールポリシーの動作を指定するには、カスタムルールグループを追加します。
- ネットワークファイアウォールのルールグループには、VPCへの入出トラフィックを監視するルールが含まれている点にご留意ください。
- 着信トラフィックと発信トラフィックの両方について、ファイアウォールエンドポイントを経由してトラフィックをルーティングするよう、ルートテーブルを更新します。
AWSネットワークファイアウォールの作成方法に関する詳細な情報は、こちらをご参照ください。
Redshiftセキュリティのベストプラクティス
一般的なベストプラクティス
サービスプロバイダーは常に、効率を最大化しサービスを最適に活用するために、いくつかの専門的なプロセスに従うようユーザーに助言します。データ管理リソースとしてのAmazon Redshiftにおいても、状況は変わりません。その利点を最大限に活用するために考慮すべきベストプラクティスを以下にご紹介します:
- アクセス設定:前提条件として、AWSアカウントへの登録が必要です。これにより、すべてのAWSサービスおよびリソースにアクセス可能なルートユーザーが作成されます。Amazonでは、管理アクセス権を管理ユーザーに割り当て、ルートユーザーアクセスを必要とするタスクのみにルートユーザーを利用することを推奨しております。
- ファイアウォールルールと設定:Amazon Redshiftはデフォルトでポート5439を使用します。ファイアウォールの内側にあるコンピュータについては、Amazonは、SQLクライアントツールからRedshiftクラスターに接続しクエリを実行するために使用できる開いているポートを把握しておくことを推奨しています。注:Amazon Redshiftクラスターのポート番号は、一度開くと変更できません。
- データベース上でのクエリの実行:Amazon Redshiftはリレーショナルデータベース管理システム(RDBMS)です。他のデータベース向けのRDBMSアプリケーションとも互換性があります。したがって、オンライントランザクション処理(OLTP)、すなわちデータの挿入や削除などの機能を提供します。データの操作や構造化(ソート、カラム圧縮、分散方式(キーベース)、データ型の監視など)に加え、クエリの実行速度を確保することが重要です。Redshiftには、パフォーマンスログや監視機能が組み込まれており、実行速度の遅いクエリの検出と改善に役立ちます。Redshiftでは、スペースを解放する目的でvacuumsおよびanalyzeコマンドを実行することが可能です。
- データ処理フロー:分析クエリを実行する際には、意思決定に至るまで、複数の段階で大量のデータを取得・比較・評価します。留意すべきガイドラインには以下が含まれます:
- Amazon RDS、Aurora、S3などのリレーショナルデータベースからのフェデレーテッドクエリデータを利用し、Redshift内のデータと結合することが可能です。
- したがって、Redshift を使用すれば、データを転送することなく、対話的にクエリを実行し、変換を適用し、挿入することができます。
- データ共有機能を利用することで、データベース、スキーマ、テーブル、ユーザー定義 SQL 関数など、さまざまなレベルでデータを比較的簡単かつ安全に交換できます。
- クエリには Amazon Redshift Spectrum をご利用ください。これにより、Amazon S3 に保存されているデータを、Redshift テーブルに事前にロードすることなくクエリできます。
セキュリティグループとVPCの設定
VPCは仮想ネットワーク環境を利用することで、クラスターへのアクセスを保護します。Amazon Redshiftでは、ユーザーがVPC内でクラスターを起動できるプラットフォームとして以下の2つをサポートしております:
- EC2-VPC
- EC2-Classic
Redshift上でクラスターを作成する際、EC2-VPCを使用してインスタンス化することが可能です。VPC内にクラスターを作成するには:
- まず、VPCを設定するか、デフォルトのVPCをご利用ください。ただし、以下の点にご注意ください:
- VPC識別子
- サブネット
- サブネットの可用性ゾーン
- コンソールまたはプログラミングによりAmazon Redshiftクラスターサブネットグループを作成し、VPC内でAmazon Redshiftクラスターが利用可能なサブネットを指定します。
- クラスターにリンクしたVPCセキュリティグループへのアクセスを許可し、インバウンド接続を許可します。
一方、セキュリティグループは、他のユーザーがRedshiftクラスターへのインバウンドアクセスを許可するために使用されます。セキュリティグループはまず定義され、その後特定のクラスターに関連付けられます。定義されたセキュリティグループは、SQLクライアントツールを使用して接続するために、クラスターのデータベースポート経由でのアクセスを許可する必要があります。セキュリティグループのルールは、作成時または後から定義できます。これは設定を行う際の利点です。
セキュリティグループのベストプラクティスには以下が含まれます:
- セキュリティグループの作成および変更を特定のIAMプリンシパルのみに許可する。
- エラー発生リスクを低減するため、必要最小限のセキュリティグループのみを作成してください。
- EC2インスタンスにアクセスできるよう、ポート22(SSH)または3389(RDP)への受信ルールを追加してください。
- 広範囲なポート範囲を開かないでください。
- VPCに追加のセキュリティ層を追加するため、セキュリティグループと同様のルールを持つネットワークACLの作成をご検討ください。
アクセス管理 – AWS IAM アカウント
前述の通り、IAM アカウント(ユーザー)には、他のユーザーやグループを作成し、それらのロールを指定する権限があります。定義されたロールと権限により、Redshift リソースへのアクセス制御が行われます。ユーザーやグループへの権限の付与または拒否には、IAM ポリシーが使用されます。「.json」ファイル内では、特定のリソースに対して許可または拒否できるアクションを指定するJSONドキュメントとしてポリシーを定義できます。
ロギングとモニタリング
先述の通り、Amazon Redshiftはデータウェアハウスサービスとして定義されています。大量のデータの保存と分析を可能にします。したがって、クラスターが常に効果的に稼働していることを確認し、トラブルシューティング、モニタリング、ロギングを可能にすることは不可欠な要件です。
ロギング
Redshiftクラスターのログは、監査のためにCloudWatchへエクスポートするか、Amazon S3バケットへファイルとしてエクスポートできます。Redshiftでは、以下の方法でロギングを有効にします:
AWSマネジメントコンソールを使用した監査ログの設定方法:
- AWSマネジメントコンソールにサインインします。
- Redshiftコンソールを開きます。
- ナビゲーションメニューから、更新対象のクラスターを選択します。
- プロパティタブのデータベース構成パネルで、監査ログの編集を選択します。
- この時点で、S3バケットまたはCloudWatchを有効化し、ログをエクスポートする選択が可能です。
AWSでは、管理が容易でデータ可視化機能を備えているCloudWatchの使用を推奨しております。
モニタリング
Redshiftでは以下の項目が監視されます:
- パフォーマンス指標
- クエリおよび負荷パフォーマンスデータ
これにより、データベースの状態やクラスターの健全性・パフォーマンスを追跡することが可能となります。監視にはAmazon CloudWatchを活用します。セキュリティの観点から、これらの連携製品をどのように、なぜ活用すべきかが理解できるでしょう。
CloudWatchメトリクスには、レイテンシー、スループット、CPU使用率など、クラスターの物理的側面を監視する機能があります。これらのメトリクスはAmazon Redshiftコンソールに直接表示されます。パフォーマンスデータにより、特定のデータベースクエリや負荷イベントで発生している事象を容易に関連付けることが可能です。
まとめ
データ保護は、様々なセキュリティメカニズムによって実現されます。Amazon Redshiftでは、ネットワーク分離、暗号化、データ監視およびロギング、動的データマスキング、ロールベースのアクセス制御など、これらの機能の多くを追加料金なしで提供しております。
これらの機能を活用することで、組織はデータが不正アクセス、改ざん、または開示から確実に保護されます。さらに、Amazon VPC上のプライベートネットワーク上でデータを分離することで、追加の保護層を追加することも可能です。加えて、組織はIAMポリシーを実装してエンドユーザーのデータアクセスを制限し、許可されたユーザーのみが機密データにアクセスできるようにすることも選択できます。
AWS Redshiftのセキュリティについてさらに詳しく学ぶためにご利用いただける追加リソースを以下にご紹介します: