AWS リソースへの認証
StarRocks は、AWS リソースと統合するために 3 つの認証方法をサポートしています: インスタンスプロファイルベースの認証、ロール引受ベースの認証、および IAM ユーザーベースの認証です。このトピックでは、これらの認証方法を使用して AWS 資格情報を設定する方法について説明します。
認証方法
インスタンスプロファイルベースの認証
インスタンスプロファイルベースの認証方法では、StarRocks クラスターがクラスターを実行している EC2 インスタンスのインスタンスプロファイルに指定された権限を継承できます。理論的には、クラスターにログインできるクラスターの任意のユーザーが、設定した AWS IAM ポリシーに従って AWS リソース上で許可されたアクションを実行できます。このユースケースの典型的なシナリオは、クラスター内の複数のクラスター ユーザー間で AWS リソース アクセス制御が必要ない場合です。この認証方法は、同じクラスター内での分離が不要であることを意味します。
ただし、この認証方法は、クラスターにログインできる人がクラスター管理者によって制御されているため、クラスター レベルの安全なアクセス制御ソリューションと見なすことができます。
ロール引受ベースの認証
インスタンスプロファイルベースの認証とは異なり、ロール引 受ベースの認証方法は、AWS IAM ロールを引き受けて AWS リソースにアクセスすることをサポートしています。詳細については、Assuming a role を参照してください。
IAM ユーザーベースの認証
IAM ユーザーベースの認証方法は、IAM ユーザー資格情報を使用して AWS リソースにアクセスすることをサポートしています。詳細については、IAM users を参照してください。
準備
まず、StarRocks クラスターが実行されている EC2 インスタンスに関連付けられている IAM ロールを見つけ、そのロールの ARN を取得します。このトピックでは、以降このロールを EC2 インスタンスロールと呼びます。インスタンスプロファイルベースの認証には EC2 インスタンスロールが必要であり、ロール引受ベースの認証には EC2 インスタンスロールとその ARN が必要です。
次に、アクセスしたい AWS リソースの種類と StarRocks 内での特定の操作シナリオに基づいて IAM ポリシーを作成します。AWS IAM のポリシーは、特定の AWS リソースに対す る一連の権限を宣言します。ポリシーを作成した後、それを IAM ロールまたはユーザーにアタッチする必要があります。これにより、IAM ロールまたはユーザーは、ポリシーで宣言された権限を割り当てられ、指定された AWS リソースにアクセスできます。
注意
これらの準備を行うには、AWS IAM コンソール にサインインし、IAM ユーザーとロールを編集する権限が必要です。
特定の AWS リソースにアクセスするために必要な IAM ポリシーについては、以下のセクションを参照してください。
インスタンスプロファイルベースの認証の準備
必要な AWS リソースにアクセスするための IAM ポリシー を EC2 インスタンスロールにアタッチします。
ロール引受ベースの認証の準備
IAM ロールを作成し、それにポリシーをアタッチする
アクセスしたい AWS リソースに応じて、1 つ以上の IAM ロールを作成します。詳細は Creating IAM roles を参照してください。次に、必要な AWS リソースにアクセスするための IAM ポリシー を作成した IAM ロールにアタッチします。
例えば、StarRocks クラスターが AWS S3 と AWS Glue にアクセスしたい場合、この状況では 1 つの IAM ロール(例: s3_assumed_role)を作成し、AWS S3 にアクセスするためのポリシーと AWS Glue にアクセスするためのポリシーの両方をそのロールにアタッチすることができます。あるいは、2 つの異なる IAM ロール(例: s3_assumed_role と glue_assumed_role)を作成し、これらのポリシーをそれぞれの異なるロールにアタッチすることもできます(つまり、AWS S3 にアクセスするためのポリシーを s3_assumed_role にアタッチし、AWS Glue にアクセスするためのポリシーを glue_assumed_role にアタッチします)。
作成した IAM ロールは、StarRocks クラスターの EC2 インスタンスロールによって引き受けられ、指定された AWS リソースにアクセスします。
このセクションでは、1 つの引受ロール s3_assumed_role を作成し、AWS S3 にアクセスするためのポリシーと AWS Glue にアクセスするためのポリシーの両方をそのロールに追加したと仮定します。
信頼関係を設定する
引受ロールを次のように設定します。
-
AWS IAM コンソール にサインインします。
-
左側のナビゲーションペインで、Access management > Roles を選択します。
-
引受ロール (
s3_assumed_role) を見つけて、その名前をクリックします。 -
ロールの詳細ページで、Trust relationships タブをクリックし、Trust relationships タブで Edit trust policy をクリックします。
-
Edit trust policy ページで、既存の JSON ポリシードキュメントを削除し、以下の IAM ポリシーを貼り付けます。このとき、
<cluster_EC2_iam_role_ARN>を上で取得した EC2 インスタンスロールの ARN に置き換える必要があります。その後、Update policy をクリックします。{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "<cluster_EC2_iam_role_ARN>"
},
"Action": "sts:AssumeRole"
}
]
}
異なる AWS リソースにアクセスする ために異なる引受ロールを作成した場合は、前述の手順を繰り返して他の引受ロールを設定する必要があります。例えば、AWS S3 と AWS Glue にアクセスするために s3_assumed_role と glue_assumed_role を作成した場合、この状況では、前述の手順を繰り返して glue_assumed_role を設定する必要があります。
EC2 インスタンスロールを次のように設定します。
-
AWS IAM コンソール にサインインします。
-
左側のナビゲーションペインで、Access management > Roles を選択します。
-
EC2 インスタンスロールを見つけて、その名前をクリックします。
-
ロールの詳細ページの Permissions policies セクションで、Add permissions をクリックし、Create inline policy を選択します。
-
Specify permissions ステップで、JSON タブをクリックし、既存の JSON ポリシードキュメントを削除し、以下の IAM ポリシーを貼り付けます。このとき、
<s3_assumed_role_ARN>を引受ロールs3_assumed_roleの ARN に置き換える必要があります。その後、Review policy をクリックします。{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["sts:AssumeRole"],
"Resource": [
"<s3_assumed_role_ARN>"
]
}
]
}異なる AWS リソースにアクセスするために異なる引受ロールを作成した場合は、前述の IAM ポリシーの Resource 要素にこれらの引受ロールの ARN をすべて記入し、カンマ (,) で区切る必要があります。例えば、AWS S3 と AWS Glue にアクセスするために
s3_assumed_roleとglue_assumed_roleを作成した場合、この状況では、s3_assumed_roleの ARN とglue_assumed_roleの ARN を次の形式で Resource 要素に記入する必要があります:"<s3_assumed_role_ARN>","<glue_assumed_role_ARN>"。 -
Review Policy ステップで、ポリシー名を入力し、Create policy をクリックします。
IAM ユーザーベースの認証の準備
IAM ユーザーを作成します。詳細は Creating an IAM user in your AWS account を参照してください。
次に、必要な AWS リソースにアクセスするための IAM ポリシー を作成した IAM ユーザーにアタッチします。
認証方法の比較
次の図は、StarRocks におけるインスタンスプロファイルベースの認証、ロール引受ベースの認証、および IAM ユーザーベースの認証のメカニズムの違いを高レベルで説明しています。
