Documentation

5. 다중 인증 정보 할당

|at|에서는 작업 템플릿에 0개 이상의 인증 정보를 할당할 수 있도록 지원합니다.

5.1. 배경 정보

automation controller 3.3 이전에는 작업 템플릿에 인증 정보와 관련된 일련의 특정 요구 사항이 있었습니다.

  • 모든 작업 템플릿(및 작업)에 정확히 *1개*의 머신/SSH 또는 자격 증명 모음 인증 정보(또는 둘 중 하나)가 있어야 했습니다.

  • 모든 작업 템플릿(및 작업)에 0개 이상의 “추가” 인증 정보가 포함될 수 있었습니다.

  • 추가 인증 정보는 환경 변수(예: AWS_ACCESS_KEY_ID)를 통해 외부 서비스에 인증을 제공하는 데 사용할 수 있는 “Cloud” 및 “Network” 인증 정보를 나타냈습니다.

이 모델에는 작업 템플릿에 인증 정보를 지정하기 위한 분리된 다양한 인터페이스가 필요했으며, 여러 자격 증명 모음 인증 정보를 플레이북 실행에 연결하는 기능(Ansible 2.4 이후 Ansible 코어에서 지원하는 사용 사례)이 없었습니다.

또한 이 모델은 단순히 요구 사항을 충족하기 위해 “더미” 머신/SSH 인증 정보를 작업 템플릿에 연결해야 하는 것과 같은 장애물을 특정 플레이북 실행 워크플로에 제기합니다.

5.2. 중요한 변경 사항

이제 작업 템플릿에 인증 정보 할당을 위한 단일 인터페이스가 있습니다. API 끝점에서 다음을 수행합니다.

GET /api/v2/job_templates/N/credentials/

더 이상 사용되지 않는 extra_credentials 끝점에서의 동작과 유사하게 POST 요청을 사용하여 인증 정보를 연결 및 연결 해제할 수 있습니다.

POST /api/v2/job_templates/N/credentials/ {'associate': true, 'id': 'X'}
POST /api/v2/job_templates/N/credentials/ {'disassociate': true, 'id': 'Y'}

이 모델에서는 할당된 인증 정보가 없는 경우에도 작업 템플릿이 유효한 것으로 간주됩니다. 또한 이 모델에서는 사용자가 작업 템플릿에 여러 자격 증명 모음 인증 정보를 할당할 수 있습니다.

5.3. 시작 시간 고려 사항

automation controller 3.3 이전에는 작업 템플릿에 구성 가능한 ask_credential_on_launch 속성이 있었습니다. 이 값은 시작 시 필요한, 누락된 인증 정보 값을 확인하는 데 사용되었으며, 주로 최소 인증 정보 요구 사항을 충족하기 위해 머신/SSH 인증 정보를 지정하는 방법 중 하나로 사용되었습니다.

새로운 통합 인증 정보 목록 모델에서도 이 속성은 여전히 존재하지만 더 이상 인증 정보를 “요청”하지 않습니다. 이제 ``ask_credential_on_launch``가 ``True``이면, 필요한 경우 작업 템플릿에 정의된 인증 정보를 덮어쓸 인증 정보 목록을 시작 시 지정할 수 있음을 나타냅니다. 예:

POST /api/v2/job_templates/N/launch/ {'credentials': [A, B, C]}`

``ask_credential_on_launch``가 ``False``이면, ``POST /api/v2/job_templates/N/launch/``에 제공된 사용자 지정 인증 정보가 무시됨을 나타냅니다.

이 모델에서 ``ask_credential_on_launch``는 시작 시 사용자에게 변경 사항(선택 사항)을 확인하도록 API 클라이언트에 알리는 용도로만 사용됩니다.

5.4. 다중 자격 증명 모음 인증 정보

작업에 여러 인증 정보를 할당할 수 있으므로 작업 템플릿이 실행될 때 암호를 해독하기 위해 여러 자격 증명 모음 인증 정보를 지정할 수 있습니다. 이 기능은 Ansible 2.4 이상의 multiple vault passwords for a playbook run 지원을 미러링합니다.

이제 자격 증명 모음 인증 정보에 ansible-playbook``에 대한 ``--vault-id 인수와 유사한, 선택적 vault_id 필드가 있습니다. 여러 자격 증명 모음 암호를 사용하는 플레이북을 실행하려면 다음을 수행합니다.

  1. 컨트롤러에서 각 자격 증명 모음 암호에 대한 자격 증명 모음 인증 정보를 생성합니다. 자격 증명 모음 ID를 인증 정보의 필드로 지정하고 암호를 입력합니다(암호화되어 저장됨).

  2. 새 인증 정보 끝점을 통해 작업 템플릿에 여러 자격 증명 모음 인증 정보를 할당합니다.

POST /api/v2/job_templates/N/credentials/

{
    'associate': true,
    'id': X
}

또는 컨트롤러 사용자 인터페이스의 인증 정보 생성 페이지에서 동일한 할당을 수행할 수 있습니다.

_images/credentials-create-multivault-credential.png

위의 예제에서 생성된 인증 정보는 사용할 시크릿을 해당 자격 증명 모음 식별자(“first”)와 암호 쌍으로 지정합니다. 이 인증 정보가 작업 템플릿에서 사용되는 경우, 아래 예제에서와 같이 “first” 자격 증명 모음 ID와 연결된 시크릿의 암호만 해독합니다.

_images/job-template-include-multi-vault-credential.png

하나의 큰 파일에 모든 시크릿을 구분 없이 포함하는 기존 방식으로 설정된 플레이북이 있는 경우, 자격 증명 모음 인증 정보를 설정할 때 자격 증명 모음 식별자 필드를 비워 둡니다.

_images/credentials-create-novaultid-credential.png

5.4.1. 프롬프트 자격 증명 모음 인증 정보

“시작 시 프롬프트”로 표시된 자격 증명 모음 인증 정보의 암호를 위해 관련 작업 템플릿의 시작 끝점은 passwords_needed_to_start 키를 통해 필요한 자격 증명 모음 암호를 전달합니다.

GET /api/v2/job_templates/N/launch/
{
    'passwords_needed_to_start': [
        'vault_password.X',
        'vault_password.Y',
    ]
}

위 예제의 ``X``와 ``Y``는 관련 자격 증명 모음 인증 정보의 기본 키입니다.

POST /api/v2/job_templates/N/launch/
{
    'credential_passwords': {
        'vault_password.X': 'first-vault-password'
        'vault_password.Y': 'second-vault-password'
    }
}

5.4.2. 연결된 인증 정보

중요한 인증 정보를 컨트롤러에 업로드하는 대신, 인증 정보 필드를 외부 시스템에 연결하고 외부 시스템을 사용하여 플레이북을 실행할 수 있습니다. |atu|의 Secret Management System 섹션을 참조하십시오.