AWS でのクラウド オブジェクト ストアの使用
EKS クラスター内のワークロードがクラウド サービスにアクセスできるようにするためのベスト プラクティスは、IAM ロールを使用することです。 ArcGIS Enterprise では、Pod Identity またはノード グループベースの IAM ロールを通じて、AWS S3 バケット内の組織のクラウド オブジェクト ストアやバックアップ ストアへのアクセスを許可できます。
組織での Kubernetes ワークロードの認証には Pod Identity を使用することをおすすめします。ポッドに付与される権限を最も細かく制御できるからです。 組織がノード グループベースの IAM ロールを使用して権限を制御している場合、アップデートまたはアップグレード時に Pod Identity の使用に移行することをおすすめします。
EKS Pod Identity の使用
ArcGIS Enterprise on Kubernetes は、Kubernetes API サーバーに対する必要な権限に基づいて、ワークロードごとに異なるサービス アカウントを使用します。 これらのサービス アカウントは、統合クラウド サービスにアクセスする際に異なる権限も必要とします。 Pod Identity を使用して、各サービス アカウントと必要な権限を持つ IAM ロールとの間に関連付けを作成できます。
重要:
ArcGIS Enterprise on Kubernetes をデプロイしたり、AWS で他の依存関係を作成する前に、EKS Pod Identity Agent アドオンをクラスターにインストールする必要があります。 手順については、「Amazon EKS Pod Identity エージェントのセットアップ」をご参照ください。
IAM のロールとポリシー
AWS S3 クラウド オブジェクト ストアとバックアップ ストアを使用して ArcGIS Enterprise on Kubernetes をデプロイして構成する前に、次の IAM ロールとポリシーを構成します:
クラウド オブジェクト ストアとバックアップ ストアに対する読み書きアクセス
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject", "s3:GetLifecycleConfiguration", "s3:PutLifecycleConfiguration", "s3:ListMultipartUploadParts", "s3:GetBucketLocation", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::<cloudObjectStoreBucket>/*", "arn:aws:s3:::<cloudObjectStoreBucket>", "arn:aws:s3:::<backupStoreBucket>/*", "arn:aws:s3:::<backupStoreBucket>" ] } ] }クラウド オブジェクト ストアに対する読み書きアクセス
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject", "s3:GetLifecycleConfiguration", "s3:PutLifecycleConfiguration", "s3:ListMultipartUploadParts", "s3:GetBucketLocation", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::<cloudObjectStoreBucket>/*", "arn:aws:s3:::<cloudObjectStoreBucket>" ] } ] }クラウド オブジェクト ストアに対する読み取り専用アクセス
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::<cloudObjectStoreBucket>/*", "arn:aws:s3:::<cloudObjectStoreBucket>" ] } ] }
注意:
各 IAM ロールの下に追加のポリシーを作成して、システム オブジェクトやバックアップ ストアに加えて、ユーザー ストレージ バケットへのアクセスを許可することができます。
Pod Identity の関連付け
EKS クラスター内で、Pod Identity の関連付けを追加して、各サービス アカウントを適切な IAM ロールにマッピングします。 手順については、AWS ドキュメントのトピック「IAM ロールを Kubernetes サービス アカウントに割り当てる」をご参照ください。
以下の表は、各サービス アカウントに必要な IAM ロールを示しています:
| サービス アカウント | IAM ロール |
|---|---|
| arcgis-admin-serviceaccount | クラウド オブジェクト ストアとバックアップ ストアに対する読み書きアクセス |
| arcgis-disasterrecovery-serviceaccount | クラウド オブジェクト ストアとバックアップ ストアに対する読み書きアクセス |
| arcgis-spatiotemporalindex-serviceaccount | クラウド オブジェクト ストアとバックアップ ストアに対する読み書きアクセス |
| arcgis-cloudservice-readwrite-serviceaccount | クラウド オブジェクト ストアに対する読み書きアクセス |
| arcgis-cloudservice-readonly-serviceaccount | クラウド オブジェクト ストアに対する読み取り専用アクセス |
表内のサービス アカウント名には、デフォルトのサイト名である arcgis が反映されています。 別のサイト名を構成した場合、その名前が arcgis の代わりにサービス アカウントの接頭辞として使用されます。 組織のサイト名がわからない場合は、組織の現在の設定を確認してください。
ノード グループベースの IAM ロールの使用
Pod Identity を使用できない場合、ArcGIS Enterprise on Kubernetes は、Kubernetes クラスターのノード グループに割り当てられている IAM ロールを使用してクラウド サービスにアクセスする権限を得ることもできます。
注意:
ノード グループベースの IAM ロールを使用している場合、それらのノード上で動作するすべてのワークロードが同等の権限を持ちます。 これにより、一部のワークロードは不要な権限を得ることになります。
ノード グループベースの IAM ロールを使用するには、単一の結合された読み書きポリシーを作成します:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject",
"s3:GetLifecycleConfiguration",
"s3:PutLifecycleConfiguration",
"s3:ListMultipartUploadParts",
"s3:GetBucketLocation",
"s3:AbortMultipartUpload"
],
"Resource": [
"arn:aws:s3:::<systemObjectStoreBucket>/*",
"arn:aws:s3:::<systemObjectStoreBucket>",
"arn:aws:s3:::<backupStoreBucket>/*",
"arn:aws:s3:::<backupStoreBucket>"
]
}
]
}
EKS Pod Identity への移行
ノード グループベースの IAM ロールを使用する組織は、組織のアップグレードまたはアップデート時に EKS Pod Identity への移行を計画する必要があります。 Pod Identity の関連付けを作成した後はすべてのポッドの再起動が必要となるため、これによりサービス停止を最小限に抑えられます。 ポッドは組織のアップデートまたはアップグレード時に自動的に再起動します。
移行して権限管理に Pod Identity を使用するには、以下の手順を実行します:
EKS Pod Identity Agent アドオンをインストールします。
ArcGIS Enterprise をアップグレードします。
サービスや重要なワークフローが正常に機能していることを確認します。
ノード グループの IAM ロールから、S3 ストレージへのアクセスを許可する IAM ポリシーを削除します。
サービスや重要なワークロードが正常に機能していることをもう一度確認します。
この段階で問題が見つかった場合は、元の IAM ポリシーをノード グループの IAM ロールに再び追加します。 これにより、アドオンのステータス、Pod Identity の IAM ロールとポリシー、Pod Identity の関連付けの詳細レビューを実行する間は機能を回復できます。