Amazon EKS クラスター用の kubeconfig ファイルを生成できないのはなぜですか?

最終更新日:2021 年 11 月 22 日

Amazon Elastic Kubernetes Service (Amazon EKS) クラスターの kubeconfig ファイルを生成しようとすると、AccessDeniedException エラーが発生します。

簡単な説明

Amazon EKS クラスターの kubeconfig ファイルを生成するには、eks:DescribeCluster API アクションをクラスターで使用するための許可が必要です。許可を取得するには、AWS Identity and Access Management (IAM) ポリシーを IAM ユーザーにアタッチします。

解決方法

IAM ポリシーを IAM ユーザーにアタッチするには、次の手順を実行します。

1.    IAM コンソールを開きます。

2.    ナビゲーションペインで、[Users or Roles] (ユーザーまたはロール) を選択します。

3.    ポリシーを埋め込むユーザーまたはロールの名前を選択します。

4.    [Permissions] (許可) タブで、[Add inline policy] (インラインポリシーを追加) を選択します。

5.    [JSON] タブを選択します。

6.    テキストエディタを使用して、コードを次の IAM ポリシーに置き換えます。

{
   "Version": "2012-10-17",
   "Statement": [
       { 
            "Effect": "Allow",
            "Action": [
                "eks:DescribeCluster"
            ],
            "Resource": "*"
       }
    ]
}

7.    [Review policy] (ポリシーの確認) を選択します。

8.    [Name] (名前) で、ポリシーの名前を入力します。例: eks_update-kubeconfig

注: ポリシーの名前は任意に選択できます。

9.    [Create policy] (ポリシーを作成) を選択します。

明示的拒否メッセージは、多要素認証 (MFA) が false の場合、ほとんどのアクションを拒否する IAM ポリシーがあることを示します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "BlockMostAccessUnlessSignedInWithMFA",
      "Effect": "Deny",
      "NotAction": [
        "iam:CreateVirtualMFADevice",
        "iam:EnableMFADevice",
        "iam:ListMFADevices",
        "iam:ListUsers",
        "iam:ListVirtualMFADevices",
        "iam:ResyncMFADevice",
        "sts:GetSessionToken"
      ],
      "Resource": "*",
      "Condition": {
        "BoolIfExists": {
          "aws:MultiFactorAuthPresent": "false"
        }
      }
    }
  ]
}

注: MFA デバイスを使用するため、AWS Command Line Interface (AWS CLI) で AWS リソースへのアクセスを認証するには、MFA トークンを使用する必要があります。MFA トークンを使用して、AWS CLI を通じて AWS リソースへのアクセスを認証するにはどうすればよいですか? の記事の手順に従います。 その後、sts get-session-token AWS CLI コマンドを実行します。

例:

$ aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token

注: arn-of-the-mfa-device を MFA デバイスの ARN に置き換え、code-from-token をトークンのコードに置き換えます。

値を環境変数にエクスポートすることにより、一時的な認証情報を使用できます。

例:

$ export AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output

$ export AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output

$ export AWS_SESSION_TOKEN=example-session-token-as-in-previous-output

update-kubeconfig コマンドを実行し、~/.kube/config の下にある設定ファイルが更新されていることを確認します。

aws eks --region region-code update-kubeconfig --name cluster_name

注: region-code を AWS リージョンのコードに置き換え、cluster name をクラスターの名前に置き換えます。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?