테스트 실행 모드에서 조직 정책 만들기

이 페이지에서는 테스트 실행 모드에서 조직 정책을 사용하여 정책 변경사항이 적용되기 전에 정책이 워크플로에 미치는 영향을 모니터링하는 방법을 보여줍니다.

테스트 실행 모드의 조직 정책은 다른 조직 정책과 유사하게 생성 및 적용되며 정책 위반은 감사 로깅되지만 위반 작업이 거부되지는 않습니다.

시작하기 전에

테스트 실행 모드에서 조직 정책을 사용하려면 Google Cloud 프로젝트에 결제를 사용 설정해야 합니다. 프로젝트의 결제가 사용 설정되어 있는지 확인하는 방법에 대한 자세한 내용은 프로젝트의 결제 상태 확인을 참조하세요.

조직 정책 및 제약조건의 정의 및 작동 방식에 대한 자세한 내용은 조직 정책 서비스 소개를 참조하세요.

필요한 역할

조직 정책을 관리하는 데 필요한 권한을 얻으려면 관리자에게 조직의 조직 정책 관리자(roles/orgpolicy.policyAdmin) IAM 역할을 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 조직 정책을 관리하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 확장하세요.

필수 권한

조직 정책을 관리하려면 다음 권한이 필요합니다.

  • orgpolicy.constraints.list
  • orgpolicy.policies.create
  • orgpolicy.policies.delete
  • orgpolicy.policies.list
  • orgpolicy.policies.update
  • orgpolicy.policy.get
  • orgpolicy.policy.set

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

제한사항

테스트 실행 조직 정책에 사용할 수 있는 유일한 조직 정책 제약조건은 다음과 같습니다.

다른 제약조건을 사용하여 테스트 실행 모드에서 조직 정책을 만들려고 하면 오류가 발생합니다.

테스트 실행 모드에서 조직 정책 만들기

목록 제약조건

Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 목록 제약조건에 대해 테스트 실행 모드에서 조직 정책을 만들 수 있습니다. 다음 예시는 gcp.restrictServiceUsage 목록 제약조건의 효과를 감사하는 테스트 실행 모드에서 조직 정책을 만드는 방법을 보여줍니다.

콘솔

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

    조직 정책으로 이동

  2. 프로젝트 선택 도구에서 조직 정책을 설정할 리소스를 선택합니다.

  3. 조직 정책 페이지의 목록에서 리소스 서비스 사용량 제한 제약조건을 선택합니다.

  4. 테스트 실행 탭을 선택합니다.

  5. 테스트 실행 정책 관리를 클릭합니다.

  6. 테스트 실행 정책 수정 페이지에서 상위 정책 재정의를 선택합니다.

  7. 정책 시행에서 바꾸기를 클릭합니다.

  8. 규칙 추가를 클릭합니다.

  9. 정책 값에서 커스텀을 선택합니다.

  10. 정책 유형에서 거부를 선택합니다.

  11. 커스텀 값 상자에 compute.googleapis.com을 입력한 후 완료를 클릭합니다.

  12. 커스텀 제약조건인 경우 변경사항 테스트를 클릭하여 이 조직 정책의 효과를 시뮬레이션할 수 있습니다. 자세한 내용은 정책 시뮬레이터로 조직 정책 변경사항 테스트를 참조하세요.

  13. 테스트 실행 모드의 조직 정책을 적용하려면 테스트 실행 정책 설정을 클릭합니다. 또한 정책 설정을 클릭하여 라이브 정책을 설정할 수 있습니다.

조직 정책 제약조건의 테스트 실행 탭으로 이동하여 테스트 실행 모드의 조직 정책 상태를 확인할 수 있습니다.

테스트 실행 모드의 조직 정책이 적용된 프로젝트의 경우 거부 로그 보기를 클릭하여 감사 로그를 볼 수 있습니다. 이 조직 정책의 경우 compute.googleapis.com을 거부하도록 리소스 서비스 사용량 제한 제약조건이 적용된 것처럼 감사 로그에 위반이 표시됩니다.

gcloud

테스트 실행 모드에서 조직 정책을 만들려면 dryRunSpec으로 제약조건을 정의하는 YAML 파일을 만듭니다. 예를 들면 다음과 같습니다.

  name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.restrictServiceUsage
  dryRunSpec:
    rules:
      values:
        denied_values:
        - compute.googleapis.com

다음을 바꿉니다.

  • RESOURCE_TYPE: organizations, folders 또는 projects

  • RESOURCE_ID: RESOURCE_TYPE에 지정된 리소스 유형에 따라 조직 ID, 폴더 ID, 프로젝트 ID 또는 프로젝트 번호

이 조직 정책은 gcp.restrictServiceUsage 제약조건을 적용하지 않지만 감사 로그에는 제약조건을 적용했을 때처럼 위반 사항을 표시합니다.

specdryRunSpec을 모두 정의하는 경우 동일한 YAML 파일에서 실시간 조직 정책 및 테스트 실행 조직 정책을 설정할 수 있습니다. 예를 들면 다음과 같습니다.

name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.restrictServiceUsage
spec:
  rules:
  - values:
    allowedValues:
    - container.googleapis.com

dryRunSpec:
  rules:
    values:
      allowedValues:
      - compute.googleapis.com
      - appengine.googleapis.com

테스트 실행 모드에서 조직 정책을 시행하려면 org-policies set policy 명령어를 사용합니다. 테스트 실행 모드에서 기존 조직 정책을 새 제약조건으로 업데이트하려면 --update-mask 플래그를 사용합니다. 예를 들면 다음과 같습니다.

gcloud org-policies set-policy POLICY_PATH \
  --update-mask=UPDATE_MASK

다음을 바꿉니다.

  • POLICY_PATH: 조직 정책 YAML 파일의 전체 경로

  • UPDATE_MASK: 실시간 정책만 업데이트하려면 spec, 테스트 실행 모드에서 조직 정책만 업데이트하려면 dryRunSpec. *을 사용하여 spec 필드와 dryRunSpec 필드를 모두 업데이트할 수도 있습니다. 기존 조직 정책을 업데이트할 때 이 필드를 설정하지 않으면 이 명령어에서 오류가 발생하고 조직 정책을 업데이트하지 않습니다.

org-policies describe 명령어를 사용하여 테스트 실행 모드의 조직 정책이 설정되었는지 확인할 수 있습니다. dryRunSpec 필드는 조직 정책에 있는 경우에만 나타납니다.

위의 조직 정책은 container.googleapis.com만 허용하도록 gcp.restrictServiceUsage 제약조건을 적용합니다. 하지만 감사 로그에는 compute.googleapis.comappengine.googleapis.com 위반도 표시됩니다.

불리언 제약조건

Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 불리언 제약조건의 테스트 실행 모드에서 조직 정책을 만들 수 있습니다. 다음 예시는 테스트 실행 모드에서 불리언 커스텀 조직 정책의 효과를 감사하는 조직 정책을 만드는 방법을 보여줍니다.

콘솔

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

    조직 정책으로 이동

  2. 프로젝트 선택 도구에서 조직 정책을 설정할 리소스를 선택합니다.

  3. 조직 정책 페이지의 목록에서 적용할 커스텀 조직 정책을 선택합니다.

  4. 테스트 실행 탭을 선택합니다.

  5. 테스트 실행 정책 관리를 클릭합니다.

  6. 테스트 실행 정책 수정 페이지에서 상위 정책 재정의를 선택합니다.

  7. 규칙 추가를 클릭합니다.

  8. 시행에서 사용을 선택한 후 완료를 클릭합니다.

  9. 테스트 실행 모드의 조직 정책을 적용하려면 테스트 실행 정책 설정을 클릭합니다. 테스트 실행 모드의 조직 정책이 의도한 대로 작동하는지 확인한 후 정책 설정을 클릭하여 라이브 정책을 설정할 수 있습니다.

조직 정책 제약조건의 테스트 실행 탭으로 이동하여 테스트 실행 모드의 조직 정책 상태를 확인할 수 있습니다.

테스트 실행 모드의 조직 정책이 적용된 프로젝트의 경우 거부 로그 보기를 클릭하여 감사 로그를 볼 수 있습니다. 이 조직 정책에 대해 감사 로그에는 커스텀 조직 정책이 적용된 것처럼 위반이 표시됩니다.

gcloud

테스트 실행 모드에서 조직 정책을 만들려면 dryRunSpec으로 제약조건을 정의하는 YAML 파일을 만듭니다. 예를 들면 다음과 같습니다.

  name: RESOURCE_TYPE/RESOURCE_ID/policies/CONSTRAINT_NAME
  dryRunSpec:
    rules:
    - enforce: true

다음을 바꿉니다.

  • RESOURCE_TYPE: organizations, folders 또는 projects

  • RESOURCE_ID: RESOURCE_TYPE에 지정된 리소스 유형에 따라 조직 ID, 폴더 ID, 프로젝트 ID 또는 프로젝트 번호

  • CONSTRAINT_NAME: 커스텀 제약조건의 이름. 예를 들면 custom.disableGkeAutoUpgrade입니다.

이 조직 정책은 커스텀 제약조건을 적용하지 않지만 감사 로그에는 제약조건을 적용했을 때처럼 위반 사항을 표시합니다.

specdryRunSpec을 모두 정의하는 경우 동일한 YAML 파일에서 라이브 조직 정책과 테스트 실행 모드의 조직 정책을 설정할 수 있습니다. 예를 들면 다음과 같습니다.

name: RESOURCE_TYPE/RESOURCE_ID/policies/CONSTRAINT_NAME
spec:
  rules:
  - enforce: false

dryRunSpec:
  rules:
  - enforce: true

테스트 실행 모드에서 조직 정책을 시행하려면 org-policies set policy 명령어를 사용합니다. 테스트 실행 모드에서 기존 조직 정책을 새 제약조건으로 업데이트하려면 --update-mask 플래그를 사용합니다. 예를 들면 다음과 같습니다.

gcloud org-policies set-policy POLICY_PATH \
  --update-mask=UPDATE_MASK

다음을 바꿉니다.

  • POLICY_PATH: 조직 정책 YAML 파일의 전체 경로

  • UPDATE_MASK: 실시간 정책만 업데이트하려면 spec, 테스트 실행 모드에서 조직 정책만 업데이트하려면 dryRunSpec. *을 사용하여 spec 필드와 dryRunSpec 필드를 모두 업데이트할 수도 있습니다. 기존 조직 정책을 업데이트할 때 이 필드를 설정하지 않으면 이 명령어에서 오류가 발생하고 조직 정책을 업데이트하지 않습니다.

org-policies describe 명령어를 사용하여 테스트 실행 모드의 조직 정책이 설정되었는지 확인할 수 있습니다. dryRunSpec 필드는 조직 정책에 있는 경우에만 나타납니다.

이 조직 정책은 커스텀 제약조건을 적용하지 않습니다. 그러나 감사 로그에는 커스텀 제약조건의 위반이 표시됩니다.

라이브 정책에서 테스트 실행 모드로 조직 정책 만들기

테스트 실행 모드에서 기존 조직 정책을 조직 정책의 시작점으로 사용할 수 있습니다. 이렇게 하면 기존 정책 변경이 환경에 미치는 영향을 확인할 수 있습니다.

Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 기존 정책을 기반으로 테스트 실행 모드에서 조직 정책을 만들 수 있습니다.

콘솔

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

    조직 정책으로 이동

  2. 프로젝트 선택 도구에서 리소스 서비스 사용 제한 제약조건이 이미 구성되어 있는 리소스를 선택합니다.

  3. 조직 정책 페이지의 목록에서 리소스 서비스 사용량 제한 제약조건을 선택합니다.

  4. 실시간 탭을 선택합니다.

  5. 정책 관리를 클릭합니다.

  6. 규칙 추가를 클릭합니다.

  7. 정책 값에서 커스텀을 선택합니다.

  8. 정책 유형에서 거부를 선택합니다.

  9. 커스텀 값 상자에 appengine.googleapis.com을 입력합니다.

  10. 완료를 클릭한 후 테스트 실행 정책 설정을 클릭합니다.

gcloud

기존 실시간 조직 정책을 기반으로 테스트 실행 모드에서 조직 정책을 만들려면 org-policies describe 명령어를 사용하여 리소스의 현재 정책을 가져옵니다. 예를 들면 다음과 같습니다.

gcloud org-policies describe gcp.restrictServiceUsage \
  --project=PROJECT_ID

PROJECT_ID를 이 조직 정책이 구성된 프로젝트의 프로젝트 ID 또는 프로젝트 번호로 바꿉니다.

출력은 다음과 비슷하게 표시됩니다.

  name: projects/123456789012/policies/gcp.restrictServiceUsage
  spec:
    etag: CJy93KEGEKCJw/QB
    rules:
    - values:
        allowedValues:
        - compute.googleapis.com
  updateTime: '2023-04-12T21:11:56.512804Z'

이 명령어의 결과를 임시 파일에 복사합니다. 이 파일을 수정하여 etagupdateTime 필드를 삭제하고 spec 필드를 dryRunSpec으로 변경합니다. 테스트 실행 모드의 조직 정책에서 테스트하려는 제약조건 구성을 변경합니다.

완료된 YAML 파일은 다음과 비슷하게 표시되어야 합니다.

  name: projects/123456789012/policies/gcp.restrictServiceUsage
  dryRunSpec:
    rules:
      values:
        allowedValues:
        - compute.googleapis.com
        - appengine.googleapis.com

테스트 실행 모드에서 조직 정책을 시행하려면 org-policies set policy--update-mask 플래그와 함께 사용합니다. 예를 들면 다음과 같습니다.

gcloud org-policies set-policy POLICY_PATH \
  --update-mask=dryRunSpec

POLICY_PATH를 임시 조직 정책 YAML 파일의 전체 경로로 바꿉니다.

테스트 실행 모드에서 조직 정책 삭제

Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 테스트 실행 모드에서 조직 정책을 삭제할 수 있습니다.

콘솔

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

    조직 정책으로 이동

  2. 프로젝트 선택 도구에서 조직 정책을 설정할 리소스를 선택합니다.

  3. 조직 정책 페이지의 목록에서 리소스 서비스 사용량 제한 제약조건을 선택합니다.

  4. 테스트 실행 탭을 선택합니다.

  5. 테스트 실행 정책 삭제를 클릭합니다.

gcloud

테스트 실행 모드에서 조직 정책을 삭제하려면 테스트 실행 사양 없이 조직 정책을 정의하는 YAML 파일을 만듭니다. 예를 들면 다음과 같습니다.

  name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.restrictServiceUsage
  spec:
    rules:
    - values:
      allowedValues:
      - container.googleapis.com

다음을 바꿉니다.

  • RESOURCE_TYPE: organizations, folders 또는 projects

  • RESOURCE_ID: RESOURCE_TYPE에 지정된 리소스 유형에 따라 조직 ID, 폴더 ID, 프로젝트 ID 또는 프로젝트 번호

그런 다음 --update-mask 플래그를 dryRunSpec으로 설정하여 org-policies set policy 명령어를 사용합니다. 예를 들면 다음과 같습니다.

gcloud org-policies set-policy POLICY_PATH \
  --update-mask=dryRunSpec

기존 조직 정책이 업데이트되어 테스트 실행 사양을 삭제하고 실시간 정책 사양 부분을 무시합니다.

테스트 실행 모드에서 실시간 조직 정책과 조직 정책을 동시에 삭제하려면 org-policies delete 명령어를 사용합니다. 예를 들면 다음과 같습니다.

gcloud org-policies delete CONSTRAINT_NAME \
  --RESOURCE_TYPE=RESOURCE_ID

다음을 바꿉니다.

  • CONSTRAINT_NAME: 삭제할 제약조건의 이름. 예를 들면 gcp.restrictServiceUsage입니다.

  • RESOURCE_TYPE: organizations, folders 또는 projects

  • RESOURCE_ID: RESOURCE_TYPE에 지정된 리소스 유형에 따라 조직 ID, 폴더 ID, 프로젝트 ID 또는 프로젝트 번호

테스트 실행 모드의 조직 정책에 대한 실제 평가

테스트 실행 모드의 조직 정책은 다른 조직 정책과 비슷한 상속 패턴을 따릅니다. 테스트 실행 모드의 조직 정책이 조직 리소스에 대해 설정되었으면 계층 구조의 하위 수준에서 재정의되지 않은 한 모든 종속 리소스에 상속됩니다.

실제 정책 평가에는 해당 리소스에 병합된 조직 정책 결과가 표시됩니다. 따라서 테스트 실행 정책이 로컬로 설정되지 않고 상속되는 경우 라이브 조직 정책 조정이 테스트 실행 모드의 실제 조직 정책에 반영됩니다.

또한 프로젝트의 라이브 조직 정책을 수정하면 테스트 실행 모드의 실제 조직 정책이 수정됩니다.

예를 들어 라이브 조직 정책이 enforced: false로 설정된 조직 리소스 Organization Aenforced: true로 설정된 테스트 실행 모드의 조직 정책이 있다고 가정해 보세요. 또한 하위 리소스 Folder B는 라이브 조직 정책을 enforced: false로 설정하고 테스트 실행 모드의 조직 정책을 상속합니다. Folder B에서 설정된 라이브 정책이란 테스트 실행 모드의 조직 정책에 대한 실제 정책 평가도 enforce: false이며, 상위 조직에 설정된 테스트 실행 모드의 조직 정책을 재정의한다는 것을 의미합니다.

Folder B의 하위 리소스인 Project X는 라이브 정책을 enforced: true로 설정합니다. Folder B의 동작과 비슷하게 Project X의 테스트 실행 모드의 조직 정책에 대한 실제 평가는 라이브 정책이 설정되었기 때문에 enforced: true입니다.

Folder B의 또 다른 하위 리소스인 Project Y는 테스트 실행 모드의 조직 정책을 enforced: true로 설정합니다. 이는 상위 리소스에서 조직 정책을 상속하며, 따라서 라이브 정책에 대해서는 실제 평가가 enforced: false이고, 테스트 실행 모드의 조직 정책에 대해서는 enforced: true입니다.

리소스 라이브 조직 정책 설정 실제 라이브 조직 정책 테스트 실행 모드의 조직 정책 설정 테스트 실행 모드의 실제 조직 정책
조직 A enforced: false enforced: false enforced: true enforced: true
폴더 B enforced: false enforced: false 없음 enforced: false
폴더 C 없음 enforced: false 없음 enforced: true
프로젝트 X enforced: true enforced: true 없음 enforced: true
프로젝트 Y 없음 enforced: false enforced: true enforced: true

테스트 실행 모드의 조직 정책 효과 분석

테스트 실행 모드의 조직 정책은 적용 시 작업을 차단하지 않습니다. 조직 정책이 미치는 영향을 확인하려면 조직 정책 감사 로그를 확인하면 됩니다.

테스트 실행 모드의 실시간 조직 정책 및 조직 정책의 조직 정책 감사 로그는 지정된 리소스에 적용된 정책에서 작업이 허용 또는 거부되는지를 바탕으로 생성됩니다. 다음 표에서는 조직 정책 감사 로그가 생성되는 상황을 설명합니다.

실시간 조직 정책 테스트 실행 모드의 조직 정책 감사 로그 생성됨
허용 허용 아니요
허용 거부 테스트 실행 모드의 감사 로그만
거부 허용 실시간 및 테스트 실행 모드의 감사 로그
거부 거부 실시간 및 테스트 실행 모드의 감사 로그

테스트 실행 모드 위반의 조직 정책은 감사 로그에서 실시간 모드의 위반과 함께 표시됩니다. 예를 들면 다음과 같습니다.

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "status": {
      "code": 7,
      "message": "PERMISSION_DENIED"
    },
    "authenticationInfo": {},
    "requestMetadata": {
      "callerIp": "1.2.3.4",
      "requestAttributes": {},
      "destinationAttributes": {}
    },
    "serviceName": "appengine.googleapis.com",
    "methodName": "google.api.appengine.v1.appengine.apps.services.get",
    "resourceName": "projects/sur-project-test-3",
    "metadata": {
      "constraint": "constraints/gcp.restrictServiceUsage",
      "checkedValue": "appengine.googleapis.com",
      "liveResult": "ALLOWED",
      "@type": "type.googleapis.com/google.cloud.audit.OrgPolicyDryRunAuditMetadata",
      "dryRunResult": "DENIED"
    }
  },
  "insertId": "1f2bvoxcmg1",
  "resource": {
    "type": "audited_resource",
    "labels": {
      "project_id": "sur-project-test-3",
      "service": "appengine.googleapis.com",
      "method": "google.api.appengine.v1.appengine.apps.services.get"
    }
  },
  "timestamp": "2022-06-16T19:42:58.244990928Z",
  "severity": "WARNING",
  "logName": "projects/sur-project-test-3/logs/cloudaudit.googleapis.com%2Fpolicy",
  "receiveTimestamp": "2022-06-16T19:42:59.572025716Z"
}

로그 탐색기를 사용하여 테스트 실행 모드 위반의 조직 정책만 쿼리할 수 있습니다.

콘솔

Google Cloud 콘솔에서 로그 탐색기를 사용하여 Google Cloud 프로젝트, 폴더 또는 조직의 감사 로그 항목을 검색할 수 있습니다.

  1. Google Cloud 콘솔에서 Logging > 로그 탐색기 페이지로 이동합니다.

    로그 탐색기로 이동

  2. 기존 Google Cloud 프로젝트, 폴더 또는 조직을 선택합니다.

  3. 쿼리 빌더 창에서 다음을 수행합니다.

    • 리소스 유형에서 감사 로그를 확인할 Google Cloud 리소스를 선택하세요.

    • 로그 이름에서 정책 감사 로그 유형을 선택합니다.

    • 쿼리 창에 다음을 입력합니다. protoPayload.metadata.dryRunResult = "DENIED" AND \ protoPayload.metadata.liveResult = "ALLOWED"

    로그 탐색기에서 로그를 확인하려고 할 때 문제가 발생하는 경우 문제 해결 정보를 참조하세요.

    로그 탐색기를 사용한 쿼리에 대한 상세 설명은 로그 탐색기에서 쿼리 빌드를 참조하세요.

gcloud

Google Cloud CLI는 Logging API에 명령줄 인터페이스를 제공합니다. 각 로그 이름에 유효한 리소스 식별자를 제공합니다. 예를 들어 쿼리에 프로젝트 ID가 포함된 경우 제공한 프로젝트 식별자가 현재 선택된 프로젝트 이름을 참조해야 합니다.

테스트 실행 모드 위반 시 조직 정책의 감사 로그 항목을 읽으려면 다음 명령어를 실행합니다.

gcloud logging read protoPayload.metadata.dryRunResult = "DENIED" AND \
      protoPayload.metadata.liveResult = "ALLOWED" \
    --RESOURCE_TYPE=RESOURCE_ID \

다음을 바꿉니다.

  • RESOURCE_TYPE: organization, folder 또는 project

  • RESOURCE_ID: RESOURCE_TYPE에 지정된 리소스 유형에 따라 조직 ID, 폴더 ID, 프로젝트 ID 또는 프로젝트 번호

1일 이상 된 로그를 읽으려면 명령어에 --freshness 플래그를 추가합니다.

gcloud CLI 사용에 대한 상세 설명은 gcloud logging read를 참조하세요.

조직에 프로젝트가 여러 개 있는 경우 집계 싱크를 사용하여 조직의 모든 프로젝트에서 감사 로그 항목을 집계하고 BigQuery 테이블로 라우팅할 수 있습니다. 집계 싱크를 만드는 자세한 방법은 조직 수준 로그를 수집하여 지원되는 대상으로 라우팅을 참조하세요.

다음 단계

조직 정책 제약조건을 만들고 관리하는 방법에 대한 자세한 내용은 제약조건 사용을 참조하세요.