Amazon EBS CSI 드라이버 IAM 역할 생성 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 설명서에 기여하고 싶으신가요? 이 페이지 하단으로 스크롤하여 GitHub에서 이 페이지 편집을 선택하세요. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.

Amazon EBS CSI 드라이버 IAM 역할 생성

Amazon EBS CSI 플러그 인이 사용자를 대신하여 AWS API를 호출하려면 IAM 권한이 필요합니다. 자세한 내용은 GitHub의 드라이버 권한 설정을 참조하세요.

참고

IMDS에 대한 액세스 권한을 차단하지 않는 한 Pods는 IAM 역할에 할당된 권한에 대한 액세스 권한이 있습니다. 자세한 내용은 Amazon EKS에 대한 보안 모범 사례 단원을 참조하십시오.

사전 조건
  • 기존 클러스터가 있어야 합니다.

  • 클러스터에 대한 기존 AWS Identity and Access Management(IAM) OpenID Connect(OIDC) 제공업체입니다. 이미 있는지 아니면 생성해야 하는지 확인하려면 클러스터에 대한 IAM OIDC 공급자 생성 부분을 참조하세요.

다음 절차에서는 IAM 역할을 생성하고 AWS 관리형 정책을 연결하는 방법을 보여줍니다. eksctl, AWS Management Console 또는 AWS CLI를 사용할 수 있습니다.

참고

이 절차의 특정 단계는 드라이버를 Amazon EKS 추가 기능으로 사용하기 위해 작성되었습니다. 드라이버를 자체 관리형 추가 기능으로 드라이버를 사용하려면 여러 단계가 필요합니다. 자세한 내용은 GitHub의 드라이버 권한 설정을 참조하세요.

eksctl
eksctl을 사용하여 Amazon EBS CSI 플러그 인 IAM 역할 생성
  1. IAM 역할을 생성하여 정책을 연결합니다. AWS은(는) AWS 관리형 정책을 유지 관리하거나 자체 사용자 지정 정책을 생성할 수 있습니다. IAM 역할을 생성하고 다음 명령을 사용하여 AWS 관리형 정책을 연결할 수 있습니다. my-cluster를 클러스터 이름으로 바꿉니다. 이 명령은 IAM 역할을 생성하고 IAM 정책을 연결하는 AWS CloudFormation 스택을 배포합니다. 클러스터가 AWS GovCloud(미국 동부) 또는 AWS GovCloud(미국 서부) AWS 리전에 있는 경우 arn:aws:arn:aws-us-gov:로 바꿉니다.

    eksctl create iamserviceaccount \ --name ebs-csi-controller-sa \ --namespace kube-system \ --cluster my-cluster \ --role-name AmazonEKS_EBS_CSI_DriverRole \ --role-only \ --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --approve
  2. Amazon EBS 볼륨의 암호화에 사용자 지정 KMS 키를 사용하는 경우 필요에 따라 IAM 역할을 사용자 지정합니다. 예를 들어, 다음을 수행합니다.

    1. 다음 코드를 복사하여 새로운 kms-key-for-encryption-on-ebs.json 파일에 붙여 넣습니다. custom-key-arn을 사용자 지정 KMS 키 ARN으로 바꿉니다.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["custom-key-arn"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn"] } ] }
    2. 정책을 생성합니다. KMS_Key_For_Encryption_On_EBS_Policy를 다른 이름으로 변경할 수 있습니다. 그러나 이렇게 하는 경우 이후 단계에서도 변경해야 합니다.

      aws iam create-policy \ --policy-name KMS_Key_For_Encryption_On_EBS_Policy \ --policy-document file://kms-key-for-encryption-on-ebs.json
    3. 다음 명령을 사용하여 IAM 정책을 역할에 연결합니다. 111122223333을 계정 ID로 바꿉니다. 클러스터가 AWS GovCloud(미국 동부) 또는 AWS GovCloud(미국 서부) AWS 리전에 있는 경우 arn:aws:arn:aws-us-gov:로 바꿉니다.

      aws iam attach-role-policy \ --policy-arn arn:aws:iam::111122223333:policy/KMS_Key_For_Encryption_On_EBS_Policy \ --role-name AmazonEKS_EBS_CSI_DriverRole
AWS Management Console
AWS Management Console을 사용하여 Amazon EBS CSI 플러그 인 IAM 역할을 생성하려면
  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 역할을 선택합니다.

  3. 역할(Roles) 페이지에서 역할 생성(Create role)을 선택합니다.

  4. 신뢰할 수 있는 엔터티 선택(Select trusted entity) 페이지에서 다음을 수행합니다.

    1. 신뢰할 수 있는 엔터티 유형(Trusted entity type) 섹션에서 웹 자격 증명(Web identity)을 선택합니다.

    2. 보안 인증 공급자의 경우 클러스터에 대해 OpenID Connect 공급자 URL을 선택합니다(Amazon EKS의 개요에 표시된 대로).

    3. 대상(Audience)에서 sts.amazonaws.com을 입력합니다.

    4. 다음을 선택합니다.

  5. 권한 추가(Add permissions) 페이지에서 다음을 수행합니다.

    1. 필터 정책(Filter policies) 상자에 AmazonEBSCSIDriverPolicy를 입력합니다.

    2. 검색에서 반환된 AmazonEBSCSIDriverPolicy 왼쪽에 있는 확인란을 선택합니다.

    3. 다음을 선택합니다.

  6. 이름, 검토 및 생성(Name, review, and create) 페이지에서 다음을 수행합니다.

    1. 역할 이름(Role name)에 역할의 고유한 이름(예: AmazonEKS_EBS_CSI_DriverRole)을 입력합니다.

    2. 태그 추가(선택 사항)에서 태그를 키-값 페어로 연결하여 메타데이터를 역할에 추가합니다. IAM에서 태그 사용에 대한 자세한 내용을 알아보려면 IAM 사용 설명서의 IAM 리소스에 태그 지정을 참조하세요.

    3. 역할 생성을 선택합니다.

  7. 역할을 생성한 후 편집할 수 있도록 콘솔에서 이 역할을 선택하여 엽니다.

  8. 신뢰 관계(Trust relationships) 탭을 선택한 후 신뢰 정책 편집(Edit trust policy)을 선택합니다.

  9. 다음과 비슷한 줄을 찾습니다.

    "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com"

    이전 줄의 끝에 쉼표를 추가한 다음 이전 줄 뒤에 다음 줄을 추가합니다. region-code를 클러스터가 있는 AWS 리전으로 바꿉니다. EXAMPLED539D4633E53DE1B71EXAMPLE을 클러스터의 OIDC 공급자 ID로 바꿉니다.

    "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa"
  10. 신뢰 정책 업데이트(Update Trust Policy)를 선택하여 종료합니다.

  11. Amazon EBS 볼륨의 암호화에 사용자 지정 KMS 키를 사용하는 경우 필요에 따라 IAM 역할을 사용자 지정합니다. 예를 들어, 다음을 수행합니다.

    1. 왼쪽 탐색 창에서 정책을 선택합니다.

    2. 정책(Policies) 페이지에서 정책 생성(Create Policy)을 선택합니다.

    3. 정책 생성(Create Policy) 페이지에서 JSON 탭을 선택합니다.

    4. 다음 코드를 복사하여 편집기에 붙여 넣어 custom-key-arn을 사용자 지정 KMS 키 ARN으로 바꿉니다.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["custom-key-arn"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn"] } ] }
    5. 다음: 태그(Next: Tags)를 선택합니다.

    6. 태그 추가(선택 사항)(Add tags (Optional)) 페이지에서 다음: 검토(Next: Review)를 선택합니다.

    7. 이름(Name)에 정책의 고유 이름을 입력합니다(예: KMS_Key_For_Encryption_On_EBS_Policy).

    8. 정책 생성을 선택합니다.

    9. 왼쪽 탐색 창에서 역할을 선택합니다.

    10. 콘솔에서 AmazonEKS_EBS_CSI_DriverRole을 선택하여 열고 편집합니다.

    11. 권한 추가 드롭다운 목록에서 정책 연결을 선택합니다.

    12. 필터 정책(Filter policies) 상자에 KMS_Key_For_Encryption_On_EBS_Policy를 입력합니다.

    13. 검색에서 반환된 KMS_Key_For_Encryption_On_EBS_Policy 왼쪽에 있는 확인란을 선택합니다.

    14. 정책 연결을 선택합니다.

AWS CLI
AWS CLI을 사용하여 Amazon EBS CSI 플러그 인 IAM 역할을 생성하려면
  1. 클러스터의 OIDC 공급자 URL을 확인합니다. my-cluster을 클러스터 이름으로 교체합니다. 명령의 출력이 None인 경우 사전 요구 사항을 검토합니다.

    aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text

    예제 출력은 다음과 같습니다.

    https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
  2. IAM 역할을 생성하여 AssumeRoleWithWebIdentity 작업을 부여합니다.

    1. 다음 콘텐츠를 aws-ebs-csi-driver-trust-policy.json이라는 파일에 복사합니다. 111122223333을 계정 ID로 바꿉니다. EXAMPLED539D4633E53DE1B71EXAMPLEregion-code를 이전 단계에서 반환된 값으로 바꿉니다. 클러스터가 AWS GovCloud(미국 동부) 또는 AWS GovCloud(미국 서부) AWS 리전에 있는 경우 arn:aws:arn:aws-us-gov:로 바꿉니다.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa" } } } ] }
    2. 역할을 생성합니다. AmazonEKS_EBS_CSI_DriverRole를 다른 이름으로 변경할 수 있습니다. 변경하는 경우 이후 단계에서 변경해야 합니다.

      aws iam create-role \ --role-name AmazonEKS_EBS_CSI_DriverRole \ --assume-role-policy-document file://"aws-ebs-csi-driver-trust-policy.json"
  3. 정책을 연결합니다. AWS은(는) AWS 관리형 정책을 유지 관리하거나 자체 사용자 지정 정책을 생성할 수 있습니다. 다음 명령으로 AWS 관리형 정책을 역할에 연결합니다. 클러스터가 AWS GovCloud(미국 동부) 또는 AWS GovCloud(미국 서부) AWS 리전에 있는 경우 arn:aws:arn:aws-us-gov:로 바꿉니다.

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --role-name AmazonEKS_EBS_CSI_DriverRole
  4. Amazon EBS 볼륨의 암호화에 사용자 지정 KMS 키를 사용하는 경우 필요에 따라 IAM 역할을 사용자 지정합니다. 예를 들어, 다음을 수행합니다.

    1. 다음 코드를 복사하여 새로운 kms-key-for-encryption-on-ebs.json 파일에 붙여 넣습니다. custom-key-arn을 사용자 지정 KMS 키 ARN으로 바꿉니다.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["custom-key-arn"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn"] } ] }
    2. 정책을 생성합니다. KMS_Key_For_Encryption_On_EBS_Policy를 다른 이름으로 변경할 수 있습니다. 그러나 이렇게 하는 경우 이후 단계에서도 변경해야 합니다.

      aws iam create-policy \ --policy-name KMS_Key_For_Encryption_On_EBS_Policy \ --policy-document file://kms-key-for-encryption-on-ebs.json
    3. 다음 명령을 사용하여 IAM 정책을 역할에 연결합니다. 111122223333을 계정 ID로 바꿉니다. 클러스터가 AWS GovCloud(미국 동부) 또는 AWS GovCloud(미국 서부) AWS 리전에 있는 경우 arn:aws:arn:aws-us-gov:로 바꿉니다.

      aws iam attach-role-policy \ --policy-arn arn:aws:iam::111122223333:policy/KMS_Key_For_Encryption_On_EBS_Policy \ --role-name AmazonEKS_EBS_CSI_DriverRole

Amazon EBS CSI 드라이버 IAM 역할을 생성했으므로 Amazon EBS CSI 드라이버 추가 기능 추가로 진행할 수 있습니다. 해당 절차에서 플러그인이 배포되면 ebs-csi-controller-sa라는 서비스 계정을 생성하고 해당 계정을 사용하도록 구성됩니다. 이 서비스 계정은 필요한 Kubernetes 권한이 할당되어 있는 Kubernetes clusterrole에 바인딩됩니다.