IBM Cloud Docs
VPC 보안 그룹 작성 및 관리

VPC 보안 그룹 작성 및 관리

Virtual Private Cloud

클러스터 작성 중 보안 그룹 추가

VPC 클러스터를 작성할 때 이름이 kube-<clusterID> 인 기본 작업자 보안 그룹이 자동으로 작성되어 클러스터의 모든 작업자에 적용됩니다. 기본 작업자 보안 그룹과 함께 추가 보안 그룹을 첨부할 수도 있습니다. 클러스터의 작업자에 적용되는 보안 그룹은 클러스터를 작성할 때와 작업자 풀을 작성할 때 적용되는 보안 그룹의 조합입니다. 기본 보안 그룹 및 작업자 풀에 적용된 보안 그룹을 포함하여 총 5개의 보안 그룹을 작업자에 적용할 수 있습니다. 작업자에 사용자 정의 보안 그룹을 추가하는 옵션은 CLI에서만 사용 가능합니다.

클러스터에 적용된 보안 그룹은 클러스터가 작성된 후에는 변경할 수 없습니다. 클러스터에 적용되는 보안 그룹의 규칙을 변경할 수 있지만 클러스터 레벨에서 보안 그룹을 추가하거나 제거할 수는 없습니다. 클러스터 작성 시 올바르지 않은 보안 그룹을 적용하는 경우 클러스터를 삭제하고 새 클러스터를 작성해야 합니다.

기본 보안 그룹만 원하는 경우

VPC 보안 그룹 작업자 보안 그룹

이는 클러스터 작성 시 기본 동작입니다.

클러스터를 작성할 때 추가 보안 그룹을 지정하지 마십시오.

기본 VPC및 kube-<clusterID> 클러스터 보안 그룹만 사용하여 VPC 클러스터를 작성하는 예제 명령:

 ibmcloud ks cluster create vpc-gen2 --name <cluster-name> --zone <zone> --vpc-id <vpc-id> --subnet-id <subnet-id>

다음 보안 그룹이 적용됩니다.

  • 기본 VPC 보안 그룹 (무작위로 생성된 이름)
  • kube-<clusterID> 작업자 보안 그룹입니다.

클러스터 보안 그룹 및 사용자 고유의 추가 보안 그룹을 원하는 경우

VPC 보안 그룹 작업자 보안 그룹 사용자 고유의 보안 그룹

클러스터를 작성할 때 --cluster-security-group cluster 및 사용자가 소유한 최대 4개의 추가 보안 그룹을 지정하십시오. 추가할 각 개별 보안 그룹에 대해 별도의 --cluster-security-group 옵션을 포함해야 합니다. 기본적으로 적용되는 보안 그룹을 포함하여 최대 5개의 보안 그룹을 작업자에 적용할 수 있습니다.

kube-<clusterID> 클러스터 보안 그룹 및 사용자 고유의 추가 보안 그룹을 사용하여 VPC 클러스터를 작성하는 예제 명령:

 ibmcloud ks cluster create vpc-gen2 --name <cluster-name> --zone <zone> --vpc-id <vpc-id> --subnet-id <subnet-id> --cluster-security-group cluster --cluster-security-group <group-id-1> --cluster-security-group <group-id-2> --cluster-security-group <group-id-3>

다음 보안 그룹이 적용됩니다.

  • 기본 VPC 보안 그룹 (무작위로 생성된 이름) 입니다.
  • kube-<clusterID> 작업자 보안 그룹
  • 최대 네 개의 추가 보안 그룹, 최대 총 다섯 개의 보안 그룹.

사용자 고유의 보안 그룹만 원하는 경우

VPC 보안 그룹 사용자 고유의 보안 그룹

이 옵션은 1.29 이전 버전에서 작성된 클러스터에서만 사용할 수 있습니다. 1.30부터 모든 클러스터는 작업자 노드 보안 그룹도 가져옵니다.

클러스터를 작성할 때 사용자가 소유하는 최대 5개의 보안 그룹을 지정하십시오. 추가할 각 개별 보안 그룹에 대해 별도의 --cluster-security-group 옵션을 포함해야 합니다.

사용자 고유의 보안 그룹만 사용하여 VPC 클러스터를 작성하는 예제 명령:

 ibmcloud ks cluster create vpc-gen2 --name <cluster-name> --zone <zone> --vpc-id <vpc-id> --subnet-id <subnet-id> --cluster-security-group <group-id-1> --cluster-security-group <group-id-2> --cluster-security-group <group-id-3>

다음 보안 그룹이 적용됩니다.

  • 기본 VPC 보안 그룹 (무작위로 생성된 이름)
  • 최대 네 개의 추가 보안 그룹, 최대 총 다섯 개의 보안 그룹.

작성 중에 작업자 풀에 보안 그룹 추가

기본적으로 작업자 풀에 적용되는 보안 그룹은 클러스터 작성 시 표시되는 보안 그룹과 동일합니다. 그러나 작업자 풀에 적용할 추가 보안 그룹을 지정할 수 있습니다. 작업자 풀에 추가 보안 그룹을 적용하는 경우 클러스터의 작업자에 적용되는 보안 그룹은 클러스터 작성 시 적용되는 보안 그룹 과 작업자 풀에 적용되는 보안 그룹의 조합입니다.

기본적으로 적용되는 보안 그룹을 포함하여 최대 5개의 보안 그룹을 작업자에 적용할 수 있습니다.

작업자 풀이 작성되면 작업자 풀에 적용된 보안 그룹을 변경할 수 없습니다. 작업자 풀에 적용되는 보안 그룹의 규칙을 변경할 수 있지만 작업자 풀 레벨에서 보안 그룹을 추가하거나 제거할 수는 없습니다. 작업자 풀 작성 시 올바르지 않은 보안 그룹을 적용하는 경우 작업자 풀을 삭제하고 새 작업자 풀을 작성해야 합니다.

작업자 풀에 추가 보안 그룹을 첨부하지 않으려는 경우

작업자 풀을 작성할 때 추가 보안 그룹을 지정하지 마십시오.

이 시나리오는 1.29 이전 버전에만 적용됩니다.

보안 그룹을 적용하지 않고 작업자 풀을 작성하는 예제 명령:

ibmcloud ks worker-pool create vpc-gen2 --name <worker_pool_name> --cluster <cluster_name_or_ID> --flavor <flavor> --size-per-zone <number_of_workers_per_zone>

클러스터에 적용된 보안 그룹만 작업자에 적용됩니다.

작업자 풀에 추가 보안 그룹을 연결하려는 경우

워커 풀을 생성할 때 워커 풀 생성 시점에 추가 보안 그룹을 지정하세요. 추가할 각 개별 보안 그룹에 대해 별도의 --security-group 옵션을 포함해야 합니다.

사용자 고유의 보안 그룹이 적용된 작업자 풀을 작성하는 예제 명령:

ibmcloud ks worker-pool create vpc-gen2 --name <worker_pool_name> --cluster <cluster_name_or_ID> --flavor <flavor> --size-per-zone <number_of_workers_per_zone> --security-group <group-id-1> --security-group <group-id-2> --security-group <group-id-3>

작업자 풀의 작업자에 적용되는 보안 그룹은 작업자 풀이 첨부되는 클러스터에 적용되는 보안 그룹과 작성 시 작업자 풀에 적용되는 보안 그룹의 조합입니다.

보안 그룹 보기

VPC 보안 그룹에 대한 세부사항을 보려면 다음 단계를 수행하십시오.

  1. 클러스터를 나열하고 작업 중인 클러스터의 ID 를 기록하십시오.

    클러스터가 있는 VPC를 확인하려면 ibmcloud ks cluster get --cluster <cluster_name_or_id> 를 실행하고 출력에서 VPC ID 를 확인하십시오.

    ibmcloud ks cluster ls --provider vpc-gen2
    
  2. 클러스터가 있는 VPC에 첨부된 보안 그룹을 나열하십시오. VPC 보안 그룹에는 무작위로 생성된 이름 (예: trench-hexagon-matriarch-flower) 이 지정됩니다. 클러스터 보안 그룹의 이름은 kube-<cluster-ID> 형식으로 지정됩니다. VPC 보안 그룹의 이름은 kube-<vpc-ID> 형식으로 지정됩니다.

    ibmcloud is sgs | grep <vpc_name>
    

    출력 예

    ID                                          Name                                             Rules   Network interfaces   VPC                          Resource group   
    
    r006-111aa1aa-1a1a-1a11-1111-a111aaa1a11a   trench-hexagon-matriarch-flower                    4       0                    my-vpc                      default   
    r006-222aa2aa-2a2a-2a22-2222-a222aaa2a22a   kube-a111a11a11aa1aa11a11                          4       0                    my-vpc                      default   
    r006-333aa3aa-3a3a-3a33-3333-a333aaa3a33a   kube-r006-111a11aa-aaa1-1a1a-aa11-1a1a111aa11      4       0                    my-vpc                      default   
    
  3. 보안 그룹의 세부사항을 가져옵니다. 보안 그룹에 첨부된 인바운드 및 아웃바운드 규칙을 보려면 출력에서 규칙 섹션을 찾으십시오.

    ibmcloud is sg GROUP
    

    출력 예

    ...
    Rules      
    ID                                          Direction   IP version   Protocol                  Remote   
    r006-111bb1bb-1b1b-1b11-1111-b111bbb1b11b   outbound    ipv4         all                       0.0.0.0/0   
    r006-222bb2bb-2b2b-2b22-2222-b222bbb2b22b   inbound     ipv4         all                       behind-unbuilt-guidable-anthill   
    r006-333bb3bb-3b3b-3b33-3333-b333bbb3b33b   inbound     ipv4         icmp Type=8               0.0.0.0/0   
    r006-444bb4bb-4b4b-4b44-4444-b444bbb4b44b   inbound     ipv4         tcp Ports:Min=22,Max=22   0.0.0.0/0
    

콘솔에서 보안 그룹 보기

  1. VPC 대시보드의 보안 그룹에서 클러스터가 있는 VPC에 연결된 보안 그룹을 찾으십시오.

  2. 보안 그룹을 클릭합니다.

    보안 그룹이 첨부된 VPC별로 보안 그룹을 정렬하려면 테이블에서 가상 프라이빗 클라우드 열 표제를 클릭하십시오.

  3. 보안 그룹에 첨부된 인바운드 및 아웃바운드 규칙을 보려면 규칙 탭을 클릭하십시오.

콘솔에서의 보안 그룹 규칙 작성

  1. 가상 사설 클라우드 대시보드 에서 클러스터가 속한 VPC의 기본 보안 그룹 이름을 클릭합니다.
  2. 규칙 탭을 클릭하십시오.
    • 작업자 노드에 대한 인바운드 트래픽을 제어하기 위한 새 인바운드 규칙을 작성하려면 인바운드 규칙 섹션에서 작성을 클릭하십시오.
    • 작업자 노드에 대한 아웃바운드 트래픽을 제어하기 위한 새 규칙을 작성하려면 아웃바운드 규칙 섹션에서 모든 아웃바운드 트래픽을 허용하는 기본 규칙을 삭제하십시오. 그런 다음, 아웃바운드 규칙 섹션에서 작성을 클릭하십시오.

규칙을 만드는 것 외에도 필요한 인바운드 규칙과 아웃바운드 규칙을 만들어야 한다는 점을 명심하십시오.

명령행에서 보안 그룹 규칙 작성

IBM Cloud CLI를 사용하여 클러스터의 기본 보안 그룹에 인바운드 및 아웃바운드 규칙을 추가하십시오.

  1. infrastructure-service 플러그인을 설치하십시오. 명령을 실행하기 위한 접두부는 ibmcloud is입니다.
    ibmcloud plugin install infrastructure-service
    
  2. VPC가 있는 지역을 대상으로 지정하십시오.
    ibmcloud target -r REGION
    
  3. 클러스터의 ID를 가져오십시오.
    ibmcloud ks cluster get -c CLUSTER
    
  4. 보안 그룹을 나열하고 VPC의 기본 보안 그룹의 ID를 기록해 두십시오. 기본 보안 그룹은 무작위로 생성된 이름을 사용하며 kube-<cluster_ID> 형식의 이름을 사용하지 않습니다.
    ibmcloud is sgs
    
    무작위로 생성된 이름(chamomile-dislodge-showier-unfilled)의 VPC에 대한 기본 보안 그룹이 있는 출력 예입니다.
    ID                                          Name                                       Rules   Network interfaces   VPC          Resource group
    1a111a1a-a111-11a1-a111-111111111111        chamomile-dislodge-showier-unfilled        5       2                    events-vpc   default
    2b222b2b-b222-22b2-b222-222222222222        kube-df253b6025d64744ab99ed63bb4567b6      5       3                    gen2-vpn     default
    
  5. 보안 그룹 ID를 환경 변수로 저장하십시오.
    sg=GROUP
    
  6. 보안 그룹의 기본 규칙을 검토하십시오. 규칙을 만드는 것 외에도 필요한 인바운드 규칙과 아웃바운드 규칙을 만들어야 한다는 점을 명심하십시오.
    ibmcloud is sg $sg
    
    • 인바운드 트래픽 규칙을 작성하려면 ibmcloud is sg-rulec <sg> inbound 명령을 사용하십시오.

      ibmcloud is sg-rulec $sg inbound <protocol> [--remote <remote_address> | <CIDR_block> | <security_group_ID>] [--icmp-type <icmp_type> [--icmp-code <icmp_code>]] [--port-min <port_min>] [--port-max <port_max>]
      
    • 아웃바운드 트래픽 규칙을 작성하려면 ibmcloud is sg-rulec <sg> outbound 명령을 사용하십시오.

      ibmcloud is sg-rulec $sg outbound <protocol> [--remote <remote_address> | <CIDR_block> | <security_group_ID>] [--icmp-type <icmp_type> [--icmp-code <icmp_code>]] [--port-min <port_min>] [--port-max <port_max>]
      
      1. 사용자 정의 아웃바운드 규칙을 작성한 후 모든 아웃바운드 트래픽을 허용하는 기본 규칙의 ID를 가져오십시오.

        ibmcloud is sg $sg
        

        출력 예

        Rules
        ID                                          Direction   IP version   Protocol                        Remote
        r010-e3a34cbb-d5e8-4713-a57e-3e35a7458272   inbound     ipv4         all                             freeload-flavored-surging-repaying
        r010-036c3a13-1c16-4425-9667-a4ec34b1702b   inbound     ipv4         icmp Type=8                     0.0.0.0/0
        r010-15591636-6976-493f-a94f-70721702860a   inbound     ipv4         tcp Ports:Min=22,Max=22         0.0.0.0/0
        
      2. 모든 아웃바운드 트래픽을 허용하는 기본 규칙을 삭제하십시오.

        ibmcloud is security-group-rule-delete $sg <rule_ID>
        

사용자 고유의 보안 그룹을 작성할 수 있을 뿐만 아니라 사용자가 작성하는 규칙에 추가된 규칙을 추가하거나 제거할 수 있다는 점을 유념하십시오. 필수 인바운드 및 아웃바운드 규칙 도 작성해야 합니다.

작업자 노드가 Ingress에 연결할 수 있도록 허용 LoadBalancer

작업자 노드가 Ingress LoadBalancer에 연결할 수 있도록 허용하는 단계를 따르십시오.

이 시나리오는 1.29 이전 버전에만 적용됩니다.

  1. LoadBalancer 서비스의 EXTERNAL-IP를 가져오십시오.

    kubectl get svc -o wide -n openshift-ingress router-default
    
  2. EXTERNAL-IP에 대해 dig를 실행하여 LoadBalancer와 연관된 IP 주소를 가져오십시오.

    dig <EXTERNAL-IP> +short
    

    출력 예

    150.XXX.XXX.XXX
    169.XX.XXX.XXX
    
  3. 이전에 검색한 각 IP 주소와 포트 443에 대한 아웃바운드 보안 규칙을 작성하십시오.

    ibmcloud is sg-rulec <sg> outbound tcp --port-min 443 --port-max 443 --remote 150.XXX.XXX.XXX
    

Ingress 또는 콘솔 운영자가 상태 확인에 실패하면, 이 단계를 반복하여 LoadBalancer 의 IP 주소가 변경되었는지 확인할 수 있습니다. 드물지만, LoadBalancers 에 대한 트래픽 양이 크게 달라지는 경우, 증가 또는 감소된 부하를 처리하기 위해 이러한 IP 주소가 변경될 수 있습니다.