SSO를 사용하여 AWS EKS에 대한 보안 인적 ID 및 액세스 관리

4327 단어 devopsssoeksaws


기본 사항부터 시작하십시오.



AWS Identity and Access Management( IAM )는 모든 AWS에서 세분화된 액세스 제어를 제공합니다. IAM을 사용하면 누가 어떤 서비스와 리소스에 어떤 조건에서 액세스할 수 있는지 지정할 수 있습니다.

AWS Single Sign-On( AWS SSO )은 사용자에게 여러 AWS 계정에서 Amazon EC2 인스턴스와 같은 AWS 리소스에 대한 액세스 권한을 부여할 수 있는 클라우드 서비스입니다.

Amazon Elastic Kubernetes Service( Amazon EKS )는 자체 Kubernetes 제어 플레인 또는 노드를 설치, 운영 및 유지 관리할 필요 없이 AWS에서 Kubernetes를 실행하는 데 사용할 수 있는 관리형 서비스입니다.

역할 기반 액세스 제어( RBAC )는 기업 내 개별 사용자의 역할을 기반으로 네트워크 액세스를 제한하는 방법입니다.

Kubernetes 클러스터에 대한 인증



Amazon EKS는 IAM을 사용하여 authentication to your Kubernetes cluster(Aws eks get-token 명령, AWS CLI 버전 1.16.156 이상 또는 Kubernetes용 AWS IAM Authenticator에서 사용 가능)을 제공하지만 여전히 기본 Kubernetes 역할 기반에 의존합니다. 권한 부여를 위한 액세스 제어(RBAC).



아래는 SSO로 AWS EKS를 구성하는 데 도움이 됩니다.


  • 클러스터 관리자 또는 kubectl 명령을 실행할 수 있는 액세스 권한이 있는 사람이 aws-auth ConfigMap에 SSO 역할을 추가했는지 확인합니다(클러스터에서 액세스를 관리하는 데 사용됨).

  • apiVersion: v1 
    kind: ConfigMap 
    metadata: 
      name: aws-auth 
      namespace: kube-system 
    data: 
      mapRoles: | 
        - rolearn: arn:aws:iam::11122223333:role/EKS-DevOpsAdmin 
          username: system:node:{{EC2PrivateDNSName}} 
          groups: 
            - system:bootstrappers 
            - system:nodes 
      mapUsers: | 
        - userarn: arn:aws:iam::11122223333:user/designated_user 
          username: designated_user 
          groups: 
            - system:masters
    



  • CLI/Shell/CMD에서 SSO 역할에 로그인했는지 확인하십시오. ($ 'aws sts get-caller-identity' )를 실행하여 확인합니다.
  • SSO 역할에 로그인하는 방법을 잘 모르는 경우 이 항목Configuring the AWS CLI to use AWS Single Sign-On 을 참조하십시오. 기본적으로 aws sso login 를 실행해야 합니다.

  • SSO 역할에 연결하려는 클러스터에서 eks:DescribeCluster를 실행할 수 있는 액세스 권한이 있는지 확인하십시오.
  • Amazon Web Services(AWS) 제품 및 리소스에 대한 액세스를 제어하는 ​​정책을 생성할 수 있는 도구AWS Policy Generator를 사용할 수 있습니다.

  • 최소 권한을 위해 아래 IAM 정책을 사용하십시오.

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


    전체 AWS EKS 서비스를 관리하기 위해 AdministratorAccess 역할 또는 EKS 특정 관리 정책을 사용할 수 있습니다.

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


  • Amazon EKS 클러스터에 연결할 수 있도록 kubectl을 구성합니다.
    $ aws eks update-kubeconfig --name cluster_name이렇게 하면 /home/user/.kube/config에 kubeconfig가 생성되고 kubeconfig에도 내부에 aws eks get token 명령이 있습니다
  • .

    위의 지침은 기존 클러스터에 대한 것이며 SSO를 사용하여 AWS EKS에 대한 사람의 ID 및 액세스 관리를 보호하기 위해 하나씩 사용할 수 있어야 합니다.



    질문이나 피드백이 있으면 알려주세요.

    좋은 웹페이지 즐겨찾기