Amazon Web Services ブログ

Amazon Redshift マネジメントコンソールへのきめ細かいアクセスを付与する

完全マネージド型サービスとして、Amazon Redshift は設定と使用が簡単になるように設計されています。このブログ記事では、Amazon Redshift マネジメントコンソールを使って、オペレーショングループのユーザーに特定のアクションだけを実行するアクセス権を付与する方法を紹介します。カスタム IAM ポリシーを実装する場合は、こうしたユーザーが実行中のクエリを監視および停止できるように設定できます。同時に、こうしたユーザーが Amazon Redshift クラスターの変更、再起動、削除などの他のより特権的な操作を実行できないようにすることができます。

Amazon Redshift アクセスコントロールの概要

2013 年 2 月のリリース以来、Amazon Redshift はすぐに世界中で何千社もの顧客を持つ人気のあるクラウドベースのデータウェアハウジングプラットフォームになりました。

Amazon Redshift にアクセスするには、AWS がリクエストの認証に使用できる認証情報が必要です。こうした認証情報には、Amazon クラスターやスナップショットなどの Amazon Redshift リソースにアクセスするためのアクセス許可が必要です。こうした認証情報の詳細については、Amazon Redshift のドキュメントのAmazon Redshift の認証およびアクセスコントロールを参照してください。

すべての AWS リソースは AWS アカウントによって所有され、リソースを作成またはアクセスするためのアクセス許可は AWS Identity and Access Management (IAM) ポリシーによって管理されます。AWS アカウント管理者は、IAM の ID (ユーザー、グループ、ロール) にアクセス許可ポリシーをアタッチすることができます。特に、AWS アカウント管理者は、特定のユーザーに IAM アクセス許可ポリシーをアタッチすることができます。そのようなポリシーは、そのユーザーに、スナップショットやイベントサブスクリプションなどの Amazon Redshift リソースを管理するためのアクセス許可を付与します。

アクセス許可を付与するときに、アクセス許可を取得するユーザーと、ユーザーがアクセス許可を取得する Amazon Redshift リソースを決定することができます。それらのリソースに対して許可したい特定のアクションを決めることもできます。IAM の ID にアタッチされたポリシーは ID ベースの IAM ポリシーと呼ばれ、リソースにアタッチされたポリシーはリソースベースのポリシーと呼ばれます。Amazon Redshift は、ID ベースの IAM ポリシーだけをサポートしています。

ユースケース: ユーザーに制限付きアクセスを設定する

以下のようなユースケースを想定してください。顧客のオペレーショングループのメンバーである IAM ユーザーが、Amazon Redshift クラスターで実行されているクエリを監視および停止する必要があるとします。Amazon Redshift コンソールを通じて行うのが最善です。このユーザーは、他の Amazon Redshift リソースを変更または削除することはできません。

このユースケースを実装するには、この IAM ユーザーが Amazon Redshift コンソールへの読み取り専用アクセスを持つことを保証するカスタム IAM ポリシーを実装する必要があります。これを実行することは、ユーザーが利用可能なクラスターの説明を取得できて、[Queries] タブに移動できることを意味します。さらに、IAM ユーザーが Amazon Redshift コンソールを通じて実行中のクエリをキャンセルできるようにします。これを可能にするために、redshift:CancelQuerySession IAM アクションを使用します。IAM ポリシーで許可されている他の Amazon Redshift アクションや各アクションの意味については、Amazon Redshift のドキュメントのAmazon Redshift によって定義されたアクションを参照してください。

このようなカスタム IAM ポリシーを作成するには、以下の手順に従います。

  1. AWS マネジメントコンソールにサインインして、https://console.thinkwithwp.com/iam/ で IAM コンソールを開きます。
  2. 左側のナビゲーションペインで、[ポリシー] を選択します。
  3. [ポリシーの作成] を選択します。
  4. [JSON] タブを選択して、以下のポリシーを入力します。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "redshift:Describe*",
                "redshift:CancelQuerySession",
                "redshift:ViewQueriesInConsole",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAddresses",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "ec2:DescribeInternetGateways",
                "sns:Get*",
                "sns:List*",
                "cloudwatch:Describe*",
                "cloudwatch:List*",
                "cloudwatch:Get*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

  1. [ポリシーの確認] ページで、作成しているポリシーの [名前]、およびオプションで [説明] に値を入力します。ポリシーの概要を確認して、ポリシーによって付与されている権限を確認します。次に、[ポリシーの作成] を選択して作業内容を保存します。
  2. このポリシーを既存または新規の IAM ユーザーにアタッチします。

このアクセス許可ポリシーを使用すると、IAM ユーザーは Amazon Redshift クラスターを選択し、実行中のすべてのクエリを [クエリ] タブに一覧表示して、必要に応じてクエリを停止することができます。すべてのアクセス許可は読み取り専用です。したがって、ユーザーは新しい Amazon Redshift クラスターを作成したり、既存のクラスターを変更または削除したりすることはできません。ただし、ユーザーは利用可能なクラスター、クラスタースナップショット、パラメータグループ、クラスターサブネットグループを表示したり、既存のクラスターの他のプロパティを表示したりすることはできます。

ユースケースの検証

上記の IAM ポリシーが設定されていると、IAM ユーザーが Amazon Redshift マネジメントコンソールにログインした後、ユーザーは Amazon Redshift クラスターまたはアカウント内のクラスターに関する詳細を選択して表示できます。[クエリ]タブに移動すると、ユーザーは実行中のクエリと完了したクエリの両方を確認できます。

長時間実行されているクエリをキャンセルまたは停止するには、リストからクエリを選択し、[クエリ停止] を選択します。ただし、このユーザーは Amazon Redshift コンソールで他のものを変更または削除することはできません。例として、ユーザーが (そのエンドポイントを変更するために) Amazon Redshift クラスターを変更しようとすると、以下のようなエラーになります。

結論

この記事では、Amazon Redshift コンソールへのきめ細かいアクセスを提供する詳細な顧客ユースケースについて説明しました。運用担当者は、慎重に調整された一連の IAM ポリシーを使用して、Amazon Redshift コンソールへの読み取り専用アクセス許可を持つことができます。こうした担当者は、他の Amazon Redshift リソースを変更、追加、削除することなく、実行中のクエリをキャンセルまたは停止することができます。

AWS の同僚である Ryan Mich、Sulay Shah、Hunter Grider からの多くの有用なコメントや提案に感謝いたします。

質問や提案がある場合は、コメント欄にフィードバックを残してください。Amazon Redshift の実装を最適化するためにさらに支援が必要な場合は、AWS アカウントチームまたは信頼できる AWS パートナーにお問い合わせください。

 


著者について

Raj Jayaraman は、アマゾン ウェブ サービスの AWS サポートのクラウドサポートエンジニアです。

 

 

 

 

Po Hong 博士は、AWS プロフェッショナルサービスのグローバルデータ & アナリティクススペシャリティプラクティスのシニアデータアーキテクトです。