에이전트 정책 사용(정식 버전)

에이전트 정책을 만들고 관리하려면 Google Cloud CLI에서 gcloud compute instances ops-agents policies 명령어 그룹을 사용합니다. 이 그룹의 명령은 Compute Engine의 VM Manager 도구 제품군을 사용하여 OS 정책을 관리하며, 이를 통해 운영 에이전트와 같은 소프트웨어 구성의 배포 및 유지 관리를 자동화할 수 있습니다. 이러한 정책은 기존 Monitoring 에이전트 또는 기존 Logging 에이전트에는 적용할 수 없습니다.

gcloud compute instances ops-agents policies 명령어 그룹은 OS Config API의 OS 정책 할당 리소스를 사용합니다. OS 정책 할당을 관리하기 위한 일반적인 gcloud CLI 명령 그룹(gcloud compute os-config os-policy-assignments)이 있지만, gcloud compute instances ops-agents policies 명령어 그룹은 이 문서에 설명된 에이전트 정책을 위해 특별히 설계되었습니다.

시작하기 전에

Google Cloud CLI를 사용하여 에이전트 정책을 만들기 전에 다음 단계를 완료합니다.

  1. 아직 Google Cloud CLI를 설치하지 않았다면 설치합니다.

  2. prepare-for-ops-agents-policies.sh 스크립트를 다운로드하고 실행하여 필요한 API를 사용 설정하고 Google Cloud CLI를 사용하기 위한 적절한 권한을 설정합니다.

    스크립트에 대한 자세한 내용은 prepare-for-ops-agents-policies.sh 스크립트를 참조하세요.

기존 Monitoring 에이전트 및 Logging 에이전트 제거

운영 에이전트의 정책을 만드는 경우 VM에 기존 Logging 에이전트나 Monitoring 에이전트가 설치되어 있지 않은지 확인합니다. 같은 VM에서 운영 에이전트와 기존 에이전트가 실행되면 중복 로그가 수집되거나 측정항목 수집 시 충돌이 발생할 수 있습니다. 필요한 경우 운영 에이전트를 설치하는 정책을 만들기 전에 Monitoring 에이전트를 제거하고 Logging 에이전트를 제거합니다.

OS 구성 에이전트가 설치되어 있는지 확인

OS 구성 전에 만든 VM에는 OS 구성 에이전트를 수동으로 설치하고 구성해야 할 수 있습니다. OS 구성 에이전트 수동 설치 및 확인에 대한 자세한 내용은 VM Manager 확인 체크리스트를 참조하세요.

운영 에이전트를 관리할 에이전트 정책 만들기

gcloud compute instances ops-agents policies create 명령어를 사용하여 액세스 정책을 만듭니다. 이 명령어의 구조는 다음과 같습니다.

gcloud compute instances ops-agents policies create POLICY_ID \
  --zone ZONE \
  --file path/to/policy-description-file.yaml \
  --project PROJECT_ID

이 명령어를 사용할 때는 변수를 다음과 같이 바꾸세요.

  • POLICY_ID: 정책의 이름
  • ZONE: Compute Engine 영역. 에이전트 정책은 지정된 영역의 VM에만 적용되며 여러 영역에 정책을 적용하려면 여러 정책을 만들어야 합니다.
  • path/to/policy-description-file.yaml: 정책을 설명하는 YAML 파일의 경로. 이 파일의 구조에 대한 자세한 내용은 에이전트 정책 설명을 참조하세요.
  • PROJECT_ID는 Google Cloud 프로젝트의 ID입니다.

명령어 그룹의 다른 명령어 및 사용 가능한 옵션에 대한 자세한 내용은 gcloud compute instances ops-agents policies 문서를 참조하세요.

에이전트 정책 설명

정책을 설명하는 YAML 파일을 만들고 해당 파일을 --file 옵션의 값으로 명령에 전달하여 gcloud compute instances ops-agents policies create에 정책 정보를 제공합니다.

이 섹션에서는 정책 설명 파일의 구조를 설명합니다. 자세한 내용은 정책 설명 파일 예시를 참조하세요.

YAML 정책 설명 파일의 형식

에이전트 정책의 설명 파일에는 2개의 필드 그룹이 포함되어야 합니다.

  • agentsRule: 에이전트 정책에 운영 에이전트를 설치 또는 삭제할지 여부를 알리고 작업할 운영 에이전트 버전을 지정합니다.

  • instanceFilter: 정책을 적용하는 VM을 설명합니다.

agentsRule 필드 그룹의 구조

agentsRule 필드 그룹의 구조는 다음과 같습니다.

agentsRule:
  packageState: installed|removed
  version: latest|2.*.*|2.x.y
  • packageState 필드는 정책에 운영 에이전트의 의도된 상태를 알려줍니다. 유효한 값은 installedremoved입니다.
  • version 필드는 설치하거나 삭제할 운영 에이전트의 버전을 나타냅니다. 다음 값을 지정할 수 있습니다.

    • latest: 최신 버전의 운영 에이전트
    • 2.*.*: 운영 에이전트의 메이저 버전 2의 최신 출시 버전
    • 2.x.y: 메이저 버전 2의 특정 출시 버전

    사용 가능한 운영 에이전트 버전에 대한 자세한 내용은 에이전트의 GitHub 저장소를 참조하세요.

instanceFilter 필드 그룹의 구조

instanceFilter 필드 그룹은 필터가 적용되는 영역의 VM을 나타냅니다. 이 필드 그룹은 OS Config API의 OSPolicyAssignment 리소스에서 사용하는 InstanceFilter 구조의 YAML 표현입니다.

instanceFilter 필드 그룹에는 다음 구조 중 하나가 포함됩니다.

  • 영역의 모든 VM에 에이전트 정책을 적용하려면 다음을 사용합니다.

    instanceFilter:
      all: True
    

    all: True 필터를 사용하는 경우 다른 기준을 지정할 수 없습니다.

  • 영역의 특정 VM 집합에 에이전트 정책을 적용하려면 다음 중 하나를 조합하여 VM을 설명합니다:

    • VM에 라벨 사용(포함 또는 제외):
      • inclusionLabels:
      • exclusionLabels:
    • 운영체제: inventories:

    예를 들어 다음 필터는 지정된 운영체제가 있는 VM('env=prod' 라벨이 있고 'app=web' 라벨이 없음)에 에이전트 정책을 적용합니다.

    instanceFilter:
      inclusionLabels:
      - labels:
          env: prod
      exclusionLabels:
      - labels:
          app: web
      inventories:
      - osShortName: rhel
        osVersion: '7.*'
      - osShortName: debian
        osVersion: '11'
    

    VM의 osShortNameosVersion 필드 값을 찾으려면 다음 명령어를 사용합니다.

    gcloud compute instances os-inventory describe INSTANCE_NAME \
    --zone ZONE | grep "^ShortName: "
    
    gcloud compute instances os-inventory describe INSTANCE_NAME \
    --zone ZONE | grep "^Version: "
    

    이 명령어를 사용하려면 VM에 OS 구성 에이전트가 설치되어 있어야 합니다.

에이전트 정책의 상태 확인

이 섹션에서는 생성된 정책의 상태 및 운영 에이전트의 설치를 확인하는 방법을 설명합니다. 이 정보는 에이전트 정책 문제해결에도 도움이 됩니다.

Compute Engine OS 정책 페이지

Compute Engine OS 정책 페이지에서는 운영 에이전트를 관리하는 에이전트 정책 및 VM 인스턴스 탭의 VM에 대한 정보를 제공합니다. 예를 들면 다음과 같습니다.

  • 상태 열: 정책의 성공적인 설치('규정 준수'), 진행 중('대기 중'), 실패('알 수 없음'), 또는 누락('정책 없음')을 나타냅니다.
  • VM 모니터링됨 열: 운영 에이전트가 OS 구성에 의해 관리되고 있는지('모니터링됨') 또는 관리되지 않는지('모니터링되지 않음')를 나타냅니다.

    정책이 '규정 준수'이지만 VM에 '모니터링되지 않음'이 표시되면 운영 에이전트를 설치하는 데 문제가 있을 수 있습니다. 예를 들어 기존 에이전트가 이미 설치되어 있을 수 있습니다.

Google Cloud 콘솔에서 OS 정책 페이지로 이동합니다.

OS 정책으로 이동

검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Compute Engine인 결과를 선택합니다.

Compute Engine OS 정책 탭의 VM 인스턴스에는 Google Cloud 프로젝트의 모든 OS 정책에서 관리하는 에이전트에 대한 정보가 표시됩니다. 이러한 정책에는 goog-ops-agent-policy 라벨이 지정됩니다.

  • goog-ops-agent-policy 표시기에는 여러 유형의 정책이 포함됩니다.
    • gcloud compute instances ops-agents policies 명령어를 사용하여 생성된 정책
    • VM을 만들 때 운영 에이전트 설치를 요청한 경우 생성된 정책
    • Terraform을 사용하여 운영 에이전트를 관리하기 위해 생성된 정책

    정책을 구분하려면 페이지의 OS 정책 할당 탭을 사용하여 Google Cloud 프로젝트의 모든 정책 할당에 대한 정책 ID를 확인하세요.

  • VM 모니터링 열에는 수동 설치 또는 베타 에이전트 정책과 같은 다른 수단을 사용한 운영 에이전트 설치가 반영되지 않습니다.

Cloud Monitoring VM 인스턴스 페이지

Cloud Monitoring의 VM 인스턴스 페이지에는 각 VM에 설치된 에이전트를 나열하는 에이전트 열이 포함되어 있으며, 운영 에이전트의 경우 최신 버전보다 오래된 설치 에이전트에 대한 표시기가 포함되어 있습니다.

Google Cloud 콘솔에서 VM 인스턴스 대시보드 페이지로 이동합니다.

VM 인스턴스 대시보드로 이동

검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Monitoring인 결과를 선택합니다.

정책 설명 파일 예시

이 섹션에서는 다양한 시나리오에서 YAML 정책 설명 파일의 몇 가지 예시를 제공합니다. 이 예시에서는 agent-policy-description.yaml이라는 파일에 YAML을 넣고 다음과 같은 명령어를 사용하여 us-central1-a 영역에 정책을 만든다고 가정합니다.

gcloud compute instances ops-agents policies create POLICY_ID \
  --zone us-central1-a \
  --file agent-policy-description.yaml \
  --project PROJECT_ID

모든 VM에 설치

us-central1-a 영역의 모든 VM에 최신 버전의 운영 에이전트를 설치하려면 다음 정책 설명을 사용하세요.

agentsRule:
  packageState: installed
  version: latest
instanceFilter:
  all: True

모든 VM에서 삭제

us-central1-a 영역의 모든 VM에서 최신 버전의 운영 에이전트를 삭제하려면 다음 정책 설명을 사용합니다.

agentsRule:
  packageState: removed
  version: latest
instanceFilter:
  all: True

라벨 기반 VM에 설치

'env=prod' 또는 'app=web' 라벨이 있는 us-central1-a 영역의 모든 VM에 최신 버전의 운영 에이전트를 설치하려면 다음 정책 설명을 사용하세요.

agentsRule:
  packageState: installed
  version: latest
instanceFilter:
  inclusionLabels:
  - labels:
      env: prod
  - labels:
      app: web

여러 labels:(포함 또는 제외 항목)을 지정하는 경우 이러한 라벨 중 하나라도 있으면 VM이 일치합니다. 즉, 포함 또는 제외 라벨 세트는 논리 AND 연산이 아닌 논리 OR 연산으로 일치합니다.

다른 라벨 기반 VM에 설치

Debian 11을 실행하는 us-central1-a 영역의 모든 VM("env=prod" 및 "app=web6" 라벨이 있는 VM 제외)에 최신 버전의 운영 에이전트를 설치하려면 다음 정책 설명을 사용하세요.

agentsRule:
  packageState: installed
  version: latest
instanceFilter:
  exclusionLabels:
  - labels:
      env: prod
      app: web6
  inventories:
  - osShortName: debian
    osVersion: '11'

포함 또는 제외를 위해 단일 labels: 항목 아래에 여러 키-값 쌍을 지정하는 경우 모든 라벨이 있는 경우, 즉 라벨이 논리 OR 연산이 아닌 논리 AND 연산으로 일치하는 경우 VM이 일치합니다.

운영체제 기반 VM에 설치

us-central1-a 영역에서 Debian 11 또는 RHEL 7.* 를 실행하는 모든 VM에 최신 버전 2의 운영 에이전트를 설치하려면 다음 정책 설명을 사용합니다.

agentsRule:
  packageState: installed
  version: 2.*.*
instanceFilter:
  inventories:
  - osShortName: rhel
    osVersion: '7.*'
  - osShortName: debian
    osVersion: '11'

정식 버전 에이전트 정책 문제 해결

이 섹션에서는 운영 에이전트의 정식 버전 에이전트 정책 문제를 해결하는 데 도움이 되는 정보를 제공합니다. 에이전트 정책 상태 확인에 설명된 정보도 도움이 될 수 있습니다.

ops-agents policy 명령어 실패

gcloud compute instances ops-agents policies 명령어가 실패하면 응답에 유효성 검사 오류가 표시됩니다. 오류 메시지에 제안된 대로 명령어 인수와 플래그를 수정하여 이러한 오류를 수정합니다.

검증 오류 외에도 다음 조건을 나타내는 오류가 표시될 수 있습니다.

다음 섹션에서는 이러한 조건을 자세히 설명합니다.

IAM 권한 부족

gcloud compute instances ops-agents policies 명령에 권한 오류가 발생하여 실패하는 경우 시작하기 전에에 설명된 대로 prepare-for-ops-agents-policies.sh 스크립트를 실행하여 OS 구성 정책 역할을 설정했는지 확인하세요.

prepare-for-ops-agents-policies.sh 스크립트에 대한 자세한 내용은 prepare-for-ops-agents-policies.sh 스크립트를 참조하세요.

OS Config API가 사용 설정되지 않음

샘플 오류는 다음과 같이 표시됩니다.

API [osconfig.googleapis.com] not enabled on project PROJECT_ID.
Would you like to enable and retry (this will take a few minutes)?
(y/N)?

y를 입력하여 API를 사용 설정하거나 시작하기 전에에 설명된 대로 prepare-for-ops-agents-policies.sh 스크립트를 실행하여 필요한 모든 권한을 부여합니다. 오류 메시지의 프롬프트에서 y를 입력한 경우에도 prepare-for-ops-agents-policies.sh 스크립트를 실행하여 필요한 권한을 설정해야 합니다.

프로젝트에 OS Config API가 사용 설정되어 있는지 확인하려면 다음 명령어를 실행합니다.

gcloud services list --project PROJECT_ID | grep osconfig.googleapis.com

예상되는 출력은 다음과 같습니다.

osconfig.googleapis.com    Cloud OS Config API

정책이 존재하지 않음

샘플 오류는 다음과 같이 표시됩니다.

NOT_FOUND: Requested entity was not found

이 오류는 정책이 생성되지 않았거나 정책이 삭제되었거나 지정된 정책 ID가 잘못되었음을 의미할 수 있습니다. gcloud compute instances ops-agents policies describe, update 또는 delete 명령어에 사용된 POLICY_ID가 기존 정책에 해당하는지 확인합니다. 에이전트 정책 목록을 가져오려면 gcloud compute instances ops-agents policies list 명령어를 사용하세요.

정책이 생성되었으나 효과가 없음

OS 구성 에이전트는 각 Compute Engine 인스턴스에 배포되어 Logging 및 Monitoring 에이전트의 패키지를 관리합니다. 기본 OS 구성 에이전트가 설치되지 않은 경우 정책이 아무런 효과가 없는 것처럼 보일 수 있습니다.

Linux

OS 구성 에이전트가 설치되었는지 확인하려면 다음 명령어를 실행합니다.

gcloud compute ssh instance-id \
    --project project-id \
    -- sudo systemctl status google-osconfig-agent

샘플 출력은 다음과 같습니다.

    google-osconfig-agent.service - Google OSConfig Agent
    Loaded: loaded (/lib/systemd/system/google-osconfig-agent.service; enabled; vendor preset:
    Active: active (running) since Wed 2020-01-15 00:14:22 UTC; 6min ago
    Main PID: 369 (google_osconfig)
     Tasks: 8 (limit: 4374)
    Memory: 102.7M
    CGroup: /system.slice/google-osconfig-agent.service
            └─369 /usr/bin/google_osconfig_agent

Windows

OS 구성 에이전트가 설치되었는지 확인하려면 다음 단계를 실행합니다.

  1. RDP 또는 유사한 도구를 사용하여 인스턴스에 연결하고 Windows에 로그인합니다.

  2. PowerShell 터미널을 열고 다음 PowerShell 명령어를 실행하세요. 관리자 권한은 필요하지 않습니다.

    Get-Service google_osconfig_agent
    

샘플 출력은 다음과 같습니다.

    Status   Name               DisplayName
    ------   ----               -----------
    Running  google_osconfig_a… Google OSConfig Agent

OS 구성 에이전트가 설치되어 있지 않다면 VM Manager를 지원하지 않는 운영체제를 사용 중일 수 있습니다. Compute Engine 운영체제 세부정보 문서에 각 Compute Engine 운영체제에서 지원되는 VM Manager 기능이 나와 있습니다.

운영체제에서 VM Manager를 지원하는 경우 수동으로 OS 구성 에이전트를 설치할 수 있습니다.

OS 구성 에이전트가 설치되어 있지만 운영 에이전트는 설치되지 않음

OS 구성 에이전트의 로그를 확인하여 OS 구성 에이전트가 정책을 적용할 때 오류가 있는지 확인할 수 있습니다. 로그 탐색기나 SSH 또는 RDP를 사용해서 이 작업을 수행하여 개별 Compute Engine 인스턴스를 확인할 수 있습니다.

로그 탐색기에서 OS 구성 에이전트 로그를 보려면 다음 필터를 사용하세요.

resource.type="gce_instance"
logId(OSConfigAgent)

OS 구성 에이전트 로그를 보려면 다음 안내를 따르세요.

CentOS, RHEL,
SLES, SUSE

다음 명령어를 실행합니다.

gcloud compute ssh INSTANCE_ID \
    --project PROJECT_ID \
    -- sudo cat /var/log/messages \
       | grep "OSConfigAgent\|google-fluentd\|stackdriver-agent"

Debian, Ubuntu

다음 명령어를 실행합니다.

gcloud compute ssh INSTANCE_ID \
    --project PROJECT_ID \
    -- sudo cat /var/log/syslog \
       | grep "OSConfigAgent\|google-fluentd\|stackdriver-agent"

Windows

  1. RDP 또는 유사한 도구를 사용하여 인스턴스에 연결하고 Windows에 로그인합니다.

  2. 이벤트 뷰어 앱을 열고 Windows 로그 > 애플리케이션을 선택하고 SourceOSConfigAgent인 로그를 검색합니다.

OS 구성 서비스에 연결하는 데 오류가 발생하면 시작하기 전에에 설명된 대로 prepare-for-ops-agents-policies.sh 스크립트를 실행하여 OS 구성 메타데이터를 설정합니다.

다음 명령어를 실행하면 OS 구성 메타데이터가 사용 설정되었는지 확인할 수 있습니다.

gcloud compute project-info describe \
    --project PROJECT_ID \
    | grep "enable-osconfig\|enable-guest-attributes" -A 1

예상되는 출력은 다음과 같습니다.

- key: enable-guest-attributes
  value: 'TRUE'
- key: enable-osconfig
  value: 'TRUE'

운영 에이전트가 설치되었지만 제대로 작동하지 않음

운영 에이전트 문제 디버깅에 대한 자세한 내용은 운영 에이전트 문제 해결을 참조하세요.

OS 구성 에이전트에 대한 디버그 수준 로그 사용 설정

문제를 보고할 때는 OS 구성 에이전트에서 디버그 수준 로깅을 사용 설정하는 것이 유용할 수 있습니다.

osconfig-log-level: debug 메타데이터를 설정하여 OS 구성 에이전트에 디버그 수준 로깅을 사용 설정할 수 있습니다. 수집된 로그에는 조사에 도움이 되는 추가 정보가 있습니다.

전체 프로젝트에 디버그 수준 로깅을 사용 설정하려면 다음 명령어를 실행합니다.

gcloud compute project-info add-metadata \
    --project PROJECT_ID \
    --metadata osconfig-log-level=debug

VM 하나의 디버그 수준 로깅을 사용 설정하려면 다음 명령어를 실행합니다.

gcloud compute instances add-metadata INSTANCE_ID \
    --project PROJECT_ID \
    --metadata osconfig-log-level=debug

도우미 스크립트

이 섹션에서는 이 문서에 설명된 도우미 스크립트에 대한 추가 정보를 제공합니다.

prepare-for-ops-agents-policies.sh 스크립트

prepare-for-ops-agents-policies.sh 스크립트를 다운로드한 후 사용자가 제공한 인수를 기반으로 스크립트를 사용하여 다음 작업을 수행할 수 있습니다.

  • 프로젝트의 Cloud Logging API, Cloud Monitoring API, OS Config API를 사용 설정합니다.

    OS Config API가 아직 사용 설정되지 않은 경우 에이전트 정책을 관리하는 데 충분한 제한된 기능 모드로 사용 설정됩니다. 자세한 내용은 가격 책정을 참조하세요.

  • Identity and Access Management 역할 로그 작성자(roles/logging.logWriter)모니터링 측정항목 작성자(roles/monitoring.metricWriter)Compute Engine 기본 서비스 계정에 부여하여 에이전트가 Logging 및 Cloud Monitoring API에 로그와 측정항목을 쓸 수 있도록 합니다.

  • 각 VM에서 OS 구성 에이전트가 활성화되도록 프로젝트의 OS 구성 메타데이터를 사용 설정합니다.

  • 소유자가 아닌 사용자 또는 서비스 계정에 정책을 만들고 관리하는 데 필요한 다음 IAM 역할 중 하나를 부여합니다. 프로젝트 소유자에게는 정책을 만들고 관리할 수 있는 전체 액세스 권한이 있습니다. 다른 모든 사용자나 서비스 계정에는 다음 역할 중 하나가 부여되어야 합니다.

    스크립트를 실행할 때 OSPolicyAssignment 역할을 admin, editor, viewer로 지정할 수 있습니다. 스크립트는 이러한 값을 roles/osconfig.osPolicyAssignment* 역할 이름에 매핑합니다.

다음 예시에서는 스크립트에 대한 몇 가지 일반적인 호출을 보여줍니다. 자세한 내용은 스크립트 자체의 주석을 참조하세요.

API를 사용 설정하고 기본 서비스 계정에 필요한 역할을 부여하고 프로젝트에 OS 구성 메타데이터를 사용 설정하려면 다음과 같이 스크립트를 실행합니다.

bash prepare-for-ops-agents-policies.sh --project=PROJECT_ID

프로젝트의 소유자(roles/owner) 역할이 없는 사용자에게 OS 구성 역할 중 하나를 추가로 부여하려면 다음과 같이 스크립트를 실행합니다.

bash prepare-for-ops-agents-policies.sh --project=PROJECT_ID \
  --iam-user=USER_EMAIL \
  --iam-policy-access=[admin|editor|viewer]

OS 구성 역할 중 하나를 기본이 아닌 서비스 계정에 추가로 부여하려면 다음과 같이 스크립트를 실행합니다.

bash prepare-for-ops-agents-policies.sh --project=PROJECT_ID \
  --iam-service-account=SERVICE_ACCT_EMAIL \
  --iam-policy-access=[admin|editor|viewer]

diagnose_policies.sh 스크립트

프로젝트 ID, Compute Engine 인스턴스 ID, Compute Engine 영역, 에이전트 정책 ID가 주어지면 diagnose_policies.sh 스크립트는 정책의 문제를 진단하는 데 필요한 정보를 자동으로 수집합니다.

  • OS 구성 에이전트 버전
  • 기본 OS 정책 할당
  • 이 Compute Engine 인스턴스에 적용되는 OS 정책 할당
  • 이 Compute Engine 인스턴스에 대한 설명

스크립트를 호출하려면 다음 명령어를 실행합니다.

bash diagnose_policies.sh --project-id=PROJECT_ID \ 
  --gce-instance-id=INSTANCE_ID \
  --policy-id=POLICY_ID \
  --zone=ZONE

가격 책정

gcloud compute instances ops-agents policies 명령어는 VM ManagerOS 정책 할당 리소스를 사용하여 구현됩니다. 시작하기 전에에 설명된 prepare-for-ops-agents-policies.sh 스크립트는 에이전트 정책을 생성하고 관리하는 데 충분한 제한 기능 모드(OSCONFIG_B)로 VM Manager를 설정합니다. 제한 모드에서 VM Manager를 사용하는 데는 비용이 들지 않습니다.

VM Manager를 전체 기능 모드(OSCONFIG_C)로 구성한 경우 비용이 발생할 수 있습니다.