Amazon EKS クラスター内のリソース AWS Resilience Hub へのアクセスの許可 - AWS レジリエンスハブ

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EKS クラスター内のリソース AWS Resilience Hub へのアクセスの許可

AWS Resilience Hub では、必要なアクセス許可を設定している限り、Amazon EKS クラスターにあるリソースにアクセスできます。

Amazon EKS クラスター内のリソースを検出および評価 AWS Resilience Hub するために必要なアクセス許可を に付与するには
  1. Amazon EKS クラスターにアクセスするための IAM ロールを設定します。

    ロールベースのアクセスを使用してアプリケーションを設定した場合は、このステップをスキップしてステップ 2 に進み、アプリケーションの作成に使用したロールを使用できます。 AWS Resilience Hub でこの IAM ロールを使用する方法については、AWS Resilience Hub と IAM の連携方法 を参照してください。

    現在の IAM ユーザー権限を使用してアプリケーションを設定した場合は、Amazon EKS クラスターと同じアカウントで AwsResilienceHubAssessmentEKSAccessRole IAM ロールを作成する必要があります。その後、この IAM ロールは Amazon EKS クラスターにアクセスする際に使用されます。

    アプリケーションのインポートと評価中に、 AWS Resilience Hub は IAM ロールを使用して Amazon EKS クラスター内のリソースにアクセスします。このロールは Amazon EKS クラスターと同じアカウントで作成する必要があり、Amazon EKS クラスターの評価に必要なアクセス許可を含む Kubernetes グループ AWS Resilience Hub でマッピングされます。

    Amazon EKS クラスターが AWS Resilience Hub 呼び出し元のアカウントと同じアカウントにある場合は、次の IAM 信頼ポリシーを使用してロールを作成する必要があります。この IAM 信頼ポリシーでは、 caller_IAM_roleは現在のアカウントで の APIs を呼び出すために使用されます AWS Resilience Hub。

    注記

    caller_IAM_role は、 AWS ユーザーアカウントに関連付けられているロールです。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::eks_cluster_account_id:role/caller_IAM_role" }, "Action": "sts:AssumeRole" } ] }

    Amazon EKS クラスターがクロスアカウント ( AWS Resilience Hub 呼び出し元のアカウントとは異なるアカウント) にある場合は、次の AwsResilienceHubAssessmentEKSAccessRole IAM 信頼ポリシーを使用して IAM ロールを作成する必要があります。

    注記

    前提条件として、 AWS Resilience Hub ユーザーのアカウントとは異なるアカウントにデプロイされている Amazon EKS クラスターにアクセスするには、マルチアカウントアクセスを設定する必要があります。詳細については、以下を参照してください。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::eks_cluster_account_id:role/AwsResilienceHubExecutorRole" }, "Action": "sts:AssumeRole" } ] }
  2. AWS Resilience Hub アプリケーションの ClusterRoleおよび ClusterRoleBinding (または RoleBinding) ロールを作成します。

    ClusterRole と を作成するとClusterRoleBinding、Amazon EKS クラスター内の特定の名前空間の一部であるリソースを分析および評価 AWS Resilience Hub するために必要な読み取り専用アクセス許可が に付与されます。

    AWS Resilience Hub では、次のいずれかを完了することで、障害耐性評価を生成するための名前空間へのアクセスを制限できます。

    1. すべての名前空間の読み取りアクセス権を AWS Resilience Hub アプリケーションに付与します。

      が Amazon EKS クラスター内のすべての名前空間のリソースの耐障害性を評価する AWS Resilience Hub には、次の ClusterRoleと を作成する必要がありますClusterRoleBinding

      • resilience-hub-eks-access-cluster-role (ClusterRole) — Amazon EKS クラスターを評価する AWS Resilience Hub ために が必要とするアクセス許可を定義します。

      • resilience-hub-eks-access-cluster-role-binding (ClusterRoleBinding) — Amazon EKS クラスターに resilience-hub-eks-access-group という名前のグループを定義し、そのユーザーに AWS Resilience Hubで障害耐性評価を実行するために必要なアクセス権限を付与します。

      すべての名前空間の読み取りアクセスを AWS Resilience Hub アプリケーションに付与するテンプレートは次のとおりです。

      cat << EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: resilience-hub-eks-access-cluster-role rules: - apiGroups: - "" resources: - pods - replicationcontrollers - nodes verbs: - get - list - apiGroups: - apps resources: - deployments - replicasets verbs: - get - list - apiGroups: - policy resources: - poddisruptionbudgets verbs: - get - list - apiGroups: - autoscaling.k8s.io resources: - verticalpodautoscalers verbs: - get - list - apiGroups: - autoscaling resources: - horizontalpodautoscalers verbs: - get - list - apiGroups: - karpenter.sh resources: - provisioners verbs: - get - list - apiGroups: - karpenter.k8s.aws resources: - awsnodetemplates verbs: - get - list --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: resilience-hub-eks-access-cluster-role-binding subjects: - kind: Group name: resilience-hub-eks-access-group apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: resilience-hub-eks-access-cluster-role apiGroup: rbac.authorization.k8s.io --- EOF
    2. 特定の名前空間 AWS Resilience Hub を読み取るためのアクセス権の付与。

      を使用して、特定の名前空間セット内のリソースへのアクセス AWS Resilience Hub を制限できますRoleBinding。これを実現するには、次のロールを作成する必要があります。

      • ClusterRole – AWS Resilience Hub が Amazon EKS クラスター内の特定の名前空間のリソースにアクセスし、その障害耐性を評価するには、次のClusterRoleロールを作成する必要があります。

        • resilience-hub-eks-access-cluster-role— 特定の名前空間内のリソースを評価するために必要な権限を指定します。

        • resilience-hub-eks-access-global-cluster-role – Amazon EKS クラスター内の特定の名前空間に関連付けられていないクラスタースコープのリソースを評価するために必要なアクセス許可を指定します。 AWS Resilience Hub は、Amazon EKS クラスターのクラスタースコープのリソース (ノードなど) にアクセスしてアプリケーションの耐障害性を評価するためのアクセス許可を必要とします。

        ClusterRoleロールを作成するためのテンプレートは次のとおりです。

        cat << EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: resilience-hub-eks-access-cluster-role rules: - apiGroups: - "" resources: - pods - replicationcontrollers verbs: - get - list - apiGroups: - apps resources: - deployments - replicasets verbs: - get - list - apiGroups: - policy resources: - poddisruptionbudgets verbs: - get - list - apiGroups: - autoscaling.k8s.io resources: - verticalpodautoscalers verbs: - get - list - apiGroups: - autoscaling resources: - horizontalpodautoscalers verbs: - get - list --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: resilience-hub-eks-access-global-cluster-role rules: - apiGroups: - "" resources: - nodes verbs: - get - list - apiGroups: - karpenter.sh resources: - provisioners verbs: - get - list - apiGroups: - karpenter.k8s.aws resources: - awsnodetemplates verbs: - get - list --- EOF
      • RoleBinding role – このロールは、特定の名前空間内のリソースにアクセスするために必要なアクセス許可 AWS Resilience Hub を に付与します。つまり、 が特定の名前空間内のリソースにアクセスできるようにするには AWS Resilience Hub 、各名前空間にRoleBindingロールを作成する必要があります。

        注記

        ClusterAutoscalerを自動スケーリングに使用する場合は、kube-systemに追加でRoleBindingを作成する必要があります。これは、kube-system名前空間の一部であるClusterAutoscalerを評価するために必要です。

        これにより、Amazon EKS クラスターを評価する際に、kube-system名前空間内のリソースを評価する AWS Resilience Hub ために必要なアクセス許可を付与します。

        RoleBindingロールを作成するためのテンプレートは次のとおりです。

        cat << EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: resilience-hub-eks-access-cluster-role-binding namespace: <namespace> subjects: - kind: Group name: resilience-hub-eks-access-group apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: resilience-hub-eks-access-cluster-role apiGroup: rbac.authorization.k8s.io --- EOF
      • ClusterRoleBinding role – このロールは、クラスタースコープのリソースにアクセスするために必要なアクセス許可 AWS Resilience Hub を に付与します。

        ClusterRoleBindingロールを作成するためのテンプレートは次のとおりです。

        cat << EOF | kubectl apply -f - --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: resilience-hub-eks-access-global-cluster-role-binding subjects: - kind: Group name: resilience-hub-eks-access-group apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: resilience-hub-eks-access-global-cluster-role apiGroup: rbac.authorization.k8s.io --- EOF
  3. aws-auth ConfigMapを更新して、Amazon EKS クラスターへのアクセスに使用される IAM ロールでresilience-hub-eks-access-groupをマップします。

    このステップでは、ステップ 1 で使用した IAM ロールとステップ 2 で作成した Kubernetes グループとのマッピングを作成します。このマッピングは、Amazon EKS クラスター内のリソースにアクセスするためのアクセス権限を IAM ロールに付与します。

    注記
    • ROLE-NAME はAmazon EKS クラスターへのアクセスに使用される IAM ロールを指します。

      • アプリケーションがロールベースのアクセスを使用するように設定されている場合、ロールは、アプリケーションの作成 AWS Resilience Hub 時に渡される呼び出しロールまたはセカンダリアカウントロールのいずれかである必要があります。

      • アプリケーションがリソースへのアクセスに、現在の IAM ユーザーを使用するように構成されている場合、それはAwsResilienceHubAssessmentEKSAccessRoleである必要があります。

    • ACCOUNT-ID は Amazon EKS クラスターの AWS アカウント ID である必要があります。

    次のいずれかの方法で aws-auth ConfigMap を作成できます。

    • eksctl を使用する

      次のコマンドを実行して aws-auth ConfigMap を更新します。

      eksctl create iamidentitymapping \ --cluster <cluster-name> \ --region=<region-code> \ --arn arn:aws:iam::<ACCOUNT-ID>:role/<ROLE-NAME>\ --group resilience-hub-eks-access-group \ --username AwsResilienceHubAssessmentEKSAccessRole
    • データ下の ConfigMapmapRoles セクションに IAM ロールの詳細を追加することで、aws-auth ConfigMap を手動で編集できます。次のコマンドを使用して、aws-auth ConfigMap を編集します。

      kubectl edit -n kube-system configmap/aws-auth

      mapRoles セクションは次のパラメータで構成されます。

      • rolearn - 追加される IAM ロールの Amazon リソースネーム (ARN)

        • ARN 構文 — arn:aws:iam::<ACCOUNT-ID>:role/<ROLE-NAME>

      • username — IAM ロール AwsResilienceHubAssessmentEKSAccessRole にマップされる Kubernetes 内のユーザー名。

      • groups— グループ名はステップ 2 (resilience-hub-eks-access-group) で作成したグループ名と一致する必要があります。

      注記

      mapRolesセクションが存在しない場合は、このセクションを手動で追加する必要があります。

      以下のテンプレートを使用して IAM ロールの詳細をデータ下のConfigMapmapRoles セクションに追加します。

      - groups: - resilience-hub-eks-access-group rolearn: arn:aws:iam::<ACCOUNT-ID>:role/<ROLE-NAME> username: AwsResilienceHubAssessmentEKSAccessRole