Openflow BYOC - 암호화된 EBS 볼륨 설정

이 항목에서는 다음 방법 중 하나를 사용하여 암호화된 Elastic Block Storage(EBS) 볼륨으로 Openflow BYOC를 설정하는 단계에 대해 설명합니다.

이 두 솔루션 모두 Openflow BYOC의 다음 저장소 요구 사항을 충족하는 암호화된 EBS 볼륨을 제공합니다.

  • Openflow Agent EC2 인스턴스의 루트 볼륨

  • 각 EKS 클러스터 노드 그룹의 EC2 인스턴스에 대한 루트 볼륨

  • Openflow의 런타임 및 지원 구성 요소를 위한 영구 볼륨

참고

  • :code:`$AWS_ACCOUNT_ID`는 Openflow가 배포된 계정의 AWS 계정 ID를 나타냅니다.

  • $AWS_REGION`은 계정의 AWS 리전을 나타냅니다(예: :code:`us-west-2).

  • :code:`$AWS_KMS_KEY_ARN`은 Openflow가 암호화된 EBS 볼륨에 사용할 Amazon Key Management Service(AWS KMS) 키의 Amazon 리소스 이름(ARN)을 나타냅니다.

  • $DEPLOYMENT_KEY`는 특정 배포를 위해 Openflow가 생성하고 관리하는 클라우드 리소스에 적용되는 Openflow 고유 식별자를 나타냅니다. 이는 CloudFormation 템플릿의 :code:`DataPlaneKey 매개 변수에 있으며, 배포를 위한 View Details 메뉴 옵션을 통해 Openflow에서도 사용 가능합니다.

전제 조건

이 항목에서는 Openflow BYOC 설정을 위한 전제 조건을 완료했다고 가정합니다. 자세한 내용은 Openflow - BYOC 설정 섹션을 참조하십시오.

Openflow가 암호화된 EBS 볼륨에 사용할 AWS KMS 키에 대한 액세스 권한도 있어야 합니다.

암호화된 EBS 볼륨에 특정 AWS KMS 키 제공하기

Openflow BYOC 배포용 CloudFormation 템플릿을 업로드할 때 Openflow가 암호화된 EBS 볼륨에 사용하는 AWS KMS 키에 대한 ARN을 제공할 수 있습니다.

이 구성을 통해 Openflow는 암호화된 EBS 볼륨에 대한 요청을 수행하여 모든 SCP 정책이 충족되도록 합니다. Snowflake는 대부분의 고객에게 이러한 접근 방식을 권장합니다.

이를 통해 다양한 애플리케이션에 다양한 KMS 키를 제공하여 단일 키가 손상될 위험을 줄입니다.

Openflow에 이 키를 사용하는 데 필요한 권한이 있는지 확인하려면 다음 작업을 수행합니다.

  1. AWS KMS 키가 AWS 자동 크기 조정 서비스 역할에 대한 권한을 부여하는지 확인합니다. 키 정책에는 다음 문을 포함해야 합니다.

    {
    "Sid": "Allow Autoscaling to use the key",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::$AWS_ACCOUNT_ID:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
    },
    "Action": [
        "kms:CreateGrant",
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
    ],
    "Resource": "*"
    }
    
    Copy
  2. 템플릿을 업로드할 때 CloudFormation 스택의 EBSKMSKeyArn 매개 변수에 AWS KMS 키의 ARN을 입력합니다.

    예: arn:aws:kms:$AWS_REGION:$AWS_ACCOUNT_ID:key/1a1a11aa-aa1a-aaa1a-a1a1-000000000000.

    CloudFormation 템플릿을 업로드한 후 약 20분 뒤에 Openflow BYOC 배포는 :code:`$DEPLOYMENT_KEY-eks-role`이라는 새 IAM 역할을 생성합니다.

  3. 다음 문을 KMS 키 정책에 추가하여 Openflow가 키를 사용할 수 있는 권한을 부여합니다.

    {
    "Sid": "Allow Openflow Deployment to encrypt EBS volumes",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::$AWS_ACCOUNT_ID:role/$DEPLOYMENT_KEY-eks-role"
    },
    "Action": [
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:CreateGrant",
        "kms:DescribeKey"
    ],
    "Resource": "*"
    }
    
    Copy

Openflow는 KMS 키에 대한 새 권한을 자동으로 감지하며, 설치 프로세스를 계속 진행합니다. 약 20분 후 Openflow BYOC 배포는 Active 상태가 됩니다.

AWS 계정에 대해 기본적으로 암호화된 EBS 볼륨 활성화하기

AWS 계정은 기본 문서에 따라 `AWS EBS 암호화<https://docs.aws.amazon.com/ebs/latest/userguide/encryption-by-default.html>`_를 수행하여 새 EBS 볼륨을 기본적으로 암호화할 수 있습니다.

이 구성을 통해 Openflow는 암호화되지 않은 EBS 볼륨에 대한 요청을 수행하지만 AWS API는 암호화된 EBS 볼륨을 반환합니다. 다음 단계에서는 Openflow에 이러한 암호화된 볼륨의 KMS 키를 사용할 수 있는 권한이 있는지 확인합니다.

AWS 관리 키 :code:`aws/ebs`를 사용하든 자체 KMS 키를 사용하든 관계없이, 키를 사용하는 데 필요한 권한을 부여하는 Openflow IAM 역할:code:`$DEPLOYMENT_KEY-eks-role`에 IAM 정책을 연결해야 합니다.

  1. :code:`$AWS_KMS_KEY_ARN`을 KMS 키의 ARN으로 바꿔 Openflow가 KMS 키를 사용할 수 있도록 허용하는 IAM 정책을 생성합니다.

    {
    "Sid": "Allow Openflow EKS Role to encrypt EBS volumes",
    "Effect": "Allow",
    "Action": [
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:CreateGrant",
        "kms:DescribeKey"
    ],
    "Resource": "$AWS_KMS_KEY_ARN"
    }
    
    Copy
  2. AWS KMS 키가 AWS 자동 크기 조정 서비스 역할에 대한 권한을 부여하는지 확인합니다. 키 정책에는 다음 문을 포함해야 합니다.

    {
    "Sid": "Allow Autoscaling to use the key",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::$AWS_ACCOUNT_ID:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
    },
    "Action": [
        "kms:CreateGrant",
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
    ],
    "Resource": "*"
    }
    
    Copy
  3. Openflow BYOC CloudFormation 템플릿을 업로드하는 경우 다음을 수행합니다.

    • EBSKMSKeyArn 매개 변수 옵션을 비워 둡니다.

    • AdditionalEksRolePolicyArns 매개 변수를 이전에 생성된 새 IAM 정책의 ARN으로 설정합니다. 예: arn:aws:iam::$AWS_ACCOUNT_ID:policy/openflow-kms-key-access-policy.

    CloudFormation 템플릿을 업로드한 후 약 20분 뒤에 Openflow BYOC 배포는 :code:`$DEPLOYMENT_KEY-eks-role`이라는 새 IAM 역할을 생성합니다.

  4. 다음 문을 KMS 키 정책에 추가하여 Openflow가 키를 사용할 수 있는 권한을 부여합니다.

    {
    "Sid": "Allow Openflow Deployment to encrypt EBS volumes",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::$AWS_ACCOUNT_ID:role/$DEPLOYMENT_KEY-eks-role"
    },
    "Action": [
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:CreateGrant",
        "kms:DescribeKey"
    ],
    "Resource": "*"
    }
    
    Copy

Openflow는 KMS 키에 대한 새 권한을 자동으로 감지하며, 설치 프로세스를 계속 진행합니다. 약 20분 후 Openflow BYOC 배포는 Active 상태가 됩니다.