외부 자격 증명 스토리지 구성
원격 리포지토리에서 자격 증명을 가져오도록 인스턴스를 구성합니다.
이 절차에서는 보호하려는 자격 증명으로 구성된 외부 리포지토리가 이미 있다고 가정합니다. 인스턴스에 구성된 ServiceNow 자격 증명 식별자는 JAR 파일을 통해 리포지토리의 실제 자격 증명에 매핑되어야 합니다.
외부 자격 증명 스토리지를 구성하려면 다음 작업을 순서대로 완료하십시오.
자격 증명을 분석하기 위한 JAR 파일 생성
JAR 파일을 생성하여 MID 서버에서 리포지토리의 실제 자격 증명으로 전송된 자격 증명 식별자를 확인합니다.
시작하기 전에
필요한 역할: agent_admin 또는 admin
인스턴스에 필요한 모든 자격 증명 요소(예: 개인 키)를 포함해야 합니다.
자격 증명을 분석하기 위해 JAR 파일을 생성하려면 다음을 수행합니다.
프로시저
- github의 지침과 함께 오픈 소스 JAR 파일을 다운로드합니다.ServiceNow
-
다음 샘플 Java 파일을 템플릿으로 사용하고 사용자 환경에 맞게 수정합니다.
package com.snc.discovery; import java.util.*; import java.io.*; /** * Basic implementation of a CredentialResolver that uses a properties file. */ public class CredentialResolver { private static String ENV_VAR = "CREDENTIAL_RESOLVER_FILE"; private static String DEFAULT_PROP_FILE_PATH = "C:\\dummycredentials.properties"; // These are the permissible names of arguments passed INTO the resolve() // method. // the string identifier as configured on the ServiceNow instance... public static final String ARG_ID = "id"; // a dotted-form string IPv4 address (like "10.22.231.12") of the target // system... public static final String ARG_IP = "ip"; // the string type (ssh, snmp, etc.) of credential as configured on the // instance... public static final String ARG_TYPE = "type"; // the string MID server making the request, as configured on the // instance... public static final String ARG_MID = "mid"; // These are the permissible names of values returned FROM the resolve() // method. // the string user name for the credential, if needed... public static final String VAL_USER = "user"; // the string password for the credential, if needed... public static final String VAL_PSWD = "pswd"; // the string pass phrase for the credential if needed: public static final String VAL_PASSPHRASE = "passphrase"; // the string private key for the credential, if needed... public static final String VAL_PKEY = "pkey"; // the string authentication protocol for the credential, if needed... public static final String VAL_AUTHPROTO = "authprotocol"; // the string authentication key for the credential, if needed... public static final String VAL_AUTHKEY = "authkey"; // the string privacy protocol for the credential, if needed... public static final String VAL_PRIVPROTO = "privprotocol"; // the string privacy key for the credential, if needed... public static final String VAL_PRIVKEY = "privkey"; private Properties fProps; public CredentialResolver() { } private void loadProps() { if(fProps == null) fProps = new Properties(); try { String propFilePath = System.getenv(ENV_VAR); if(propFilePath == null) { System.err.println("Environment var "+ENV_VAR+" not found. Using default file: "+DEFAULT_PROP_FILE_PATH); propFilePath = DEFAULT_PROP_FILE_PATH; } File propFile = new File(propFilePath); if(!propFile.exists() || !propFile.canRead()) { System.err.println("Can't open "+propFile.getAbsolutePath()); } else { InputStream propsIn = new FileInputStream(propFile); fProps.load(propsIn); } //fProps.load(CredentialResolver.class.getClassLoader().getResourceAsStream("dummycredentials.properties")); } catch (IOException e) { System.err.println("Problem loading credentials file:"); e.printStackTrace(); } } /** * Resolve a credential. */ public Map resolve(Map args) { loadProps(); String id = (String) args.get(ARG_ID); String type = (String) args.get(ARG_TYPE); String keyPrefix = id+"."+type+"."; if(id.equalsIgnoreCase("misbehave")) throw new RuntimeException("I've been a baaaaaaaaad CredentialResolver!"); // the resolved credential is returned in a HashMap... Map result = new HashMap(); result.put(VAL_USER, fProps.get(keyPrefix + VAL_USER)); result.put(VAL_PSWD, fProps.get(keyPrefix + VAL_PSWD)); result.put(VAL_PKEY, fProps.get(keyPrefix + VAL_PKEY)); result.put(VAL_PASSPHRASE, fProps.get(keyPrefix + VAL_PASSPHRASE)); result.put(VAL_AUTHPROTO, fProps.get(keyPrefix + VAL_AUTHPROTO)); result.put(VAL_AUTHKEY, fProps.get(keyPrefix + VAL_AUTHKEY)); result.put(VAL_PRIVPROTO, fProps.get(keyPrefix + VAL_PRIVPROTO)); result.put(VAL_PRIVKEY, fProps.get(keyPrefix + VAL_PRIVKEY)); System.err.println("Error while resolving credential id/type["+id+"/"+type+"]"); return result; } /** * Return the API version supported by this class. */ public String getVersion() { return "1.0"; } public static void main(String[] args) { CredentialResolver obj = new CredentialResolver(); obj.loadProps(); System.err.println("I spy the following credentials: "); for(Object key: obj.fProps.keySet()) { System.err.println(key+": "+obj.fProps.get(key)); } } }
자격 증명을 해결하기 위해 JAR 파일 임포트
MID 서버에서 보낸 자격 증명 식별자를 해결하기 위해 생성된 JAR 파일을 리포지토리의 실제 자격 증명으로 임포트합니다.
시작하기 전에
필요한 역할: agent_admin 또는 admin
JAR 파일을 생성한 후 MID 서버에서 액세스할 수 있는 인스턴스로 임포트합니다.
프로시저
- JAR 및 등록 정보 파일을 작성한 후 등록 정보 파일을 MID 서버에 복사하십시오.
- 다음으로 이동 MID 서버 > JAR 파일.
- 새로 만들기를 클릭합니다.
-
다음 필드를 작성합니다.
필드 설명 이름 인스턴스에서 파일을 식별하기 위한 고유하고 설명적인 이름입니다. 버전 파일의 버전 번호(사용 가능한 경우)입니다. 소스 참조를 위한 JAR 파일의 위치입니다. 소스 정보는 시스템에서 사용되지 않습니다. 설명 JAR 파일 및 인스턴스에서의 용도에 대한 간단한 설명입니다. -
배너에서 클립 아이콘을 클릭하고 JAR 파일을 기록에 첨부합니다.
그림 1. JAR 파일 첨부 - 제출을 클릭합니다.
-
MID 서버 서비스를 다시 시작합니다.
이 플랫폼을 사용하면 인스턴스와 통신하도록 구성된 모든 MID 서버에서 JAR 파일을 사용할 수 있습니다.
자격 증명 식별자 구성
인스턴스에서 자격 증명 식별자를 구성합니다.
시작하기 전에
- 외부 자격 증명 스토리지 플러그인이 활성 상태여야 합니다.
- 외부 자격 증명 스토리지 검색 사용 속성이 사용하도록 설정되어 있습니다.
프로시저
- 다음으로 이동 모두 > 디스커버리 > 자격 증명 또는 오케스트레이션 > 자격 증명.
- 새로 만들기를 클릭합니다.
- 자격 증명 유형을 선택합니다.
-
외부 자격 증명 저장소 확인란을 선택합니다.
사용자 이름 및 암호 필드가 사라지고 자격 증명 ID 필드 및 자격 증명 스토리지 자격 증명 모음 메뉴가 나타납니다.
-
자격 증명 스토리지 Vault 메뉴에서 없음, CyberArk 자격 증명 모음 또는 사용자 지정 외부 자격 증명 스토리지 자격 증명 모음을 선택합니다.
주:
CyberArk Vault를 선택하면 자격 증명 ID, IP 주소, FQDN 등 네 가지 조회 키 선택 항목이 있는 조회 키 메뉴가 나타납니다. 위의 모든 항목을 선택하면 자격 증명 모음에 여러 번 액세스해야 하므로 성능이 저하될 수 있습니다.
- 사용자 지정 외부 자격 증명 스토리지 볼트를 사용하려면 인스턴스에서 Vault 구성 [vault_configuration.list]로 이동합니다.
-
사용자 지정 자격 증명 해결자에 대해 임포트한 JAR 파일과 연결된 이름을 사용하여 새 기록을 생성합니다.
절차 자격 증명을 분석하기 위한 JAR 파일 생성 및 자격 증명을 해결하기 위해 JAR 파일 임포트 사용자 지정 외부 자격 증명 스토리지 Vault 생성에 대한 자세한 내용을 참조하십시오.
-
다음 테이블의 필드를 사용하여 자격 증명 양식을 작성합니다.
필드 설명 이름 이 자격 증명을 설명하는 고유한 이름을 입력합니다. 활성 사용하는 자격 증명을 활성화하거나 비활성화하십시오. 자격 증명 ID 외부 자격 증명 시스템용 MID 서버로 업로드된 JAR 파일의 외부 자격 증명에 대해 구성된 고유 키를 입력합니다. 매개변수 맵의 Java 클래스에 전달된 ID입니다. MID Server는 이 식별자를 사용하여 리포지토리의 실제 자격 증명을 확인합니다.public static final String ARG_ID = "id";주:이 필드는 외부 자격 증명 저장소 확인란이 선택된 경우에만 표시됩니다.태그 워크플로우 작성자가 오케스트레이션 워크플로우에서 모든 활동에 개별 자격 증명을 할당하거나, 오케스트레이션 워크플로우에서 동일한 활동 유형의 각 항목에 서로 다른 자격 증명을 할당할 수 있도록 허용합니다. 외부 자격 증명 저장소 외부 자격 증명 스토리지 시스템을 사용하려면 이 확인란을 선택합니다. 이 옵션을 선택하면 사용자 이름 및 암호 필드가 자격 증명 ID 필드로 바뀝니다. 외부 자격 증명 스토리지는 외부 자격 증명 스토리지 플러그인이 활성화된 경우에만 사용할 수 있습니다. 자격 증명 스토리지 Vault 사용 가능한 자격 증명 목록에서 외부 자격 증명 스토리지 Vault를 선택합니다. 메뉴는 Vault 구성 [vault_configuration.list]의 기록으로 구성됩니다. 새 기록을 추가하고 사용자 지정 자격 증명 해결자 JAR 파일과 관련된 이름을 사용할 수 있습니다. 절차 자격 증명을 분석하기 위한 JAR 파일 생성 및 자격 증명을 해결하기 위해 JAR 파일 임포트 사용자 지정 외부 자격 증명 스토리지 Vault 생성에 대한 자세한 내용을 참조하십시오. 적용 대상 이러한 자격 증명을 네트워크의 모든 MID Server에 적용할지 아니면 하나 이상의 특정 MID Server에 적용할지 선택하십시오. MID Server 필드에 이러한 자격 증명을 사용해야 하는 MID Server를 지정하십시오. MID Server 사용 가능한 MID Server 목록에서 MID Server를 하나 이상 선택하십시오. 이 레코드에 구성된 자격 증명은 해당 리스트의 MID Server에서 사용 가능합니다. 이 필드는 적용 대상 필드에서 특정 MID 서버를 선택했을 때만 사용할 수 있습니다. 순서 플랫폼이 장치에 로그인하려고 할 때 이 자격 증명을 시도하는 순서(시퀀스)를 입력합니다. 숫자가 작을수록 이 자격 증명이 목록에서 더 위에 나타납니다. 많은 수의 자격 증명을 사용하거나 로그인 시도가 3회 실패하여 보안상 사용자가 잠기는 경우 자격 증명 순서를 설정하십시오. 모든 자격 증명의 순서 번호가 같거나 없으면 검색 또는 오케스트레이션에서 임의의 순서로 자격 증명을 시도합니다. - 제출을 클릭합니다.
AWS에 대한 자격 증명 식별자 구성
원격 리포지토리에서 자격 증명을 가져오도록 인스턴스를 구성합니다.
시작하기 전에
필요한 역할: cloud_admin
- 검색 [com.snc.discovery]
- 클라우드 프로비저닝 및 거버넌스 [com.snc.cloud.mgmt]
- 외부 자격 증명 스토리지 [com.snc.discovery.external_credentials]
이 태스크 정보
이 절차에서는 보호하려는 자격 증명으로 구성된 외부 리포지토리가 이미 있다고 가정합니다. ServiceNow 인스턴스에 구성된 자격 증명 식별자는 JAR 파일을 통해 리포지토리의 실제 자격 증명에 매핑되어야 합니다.
프로시저
- 다음으로 이동 모두 > 디스커버리 > 자격 증명.
- 외부 자격 증명 스토리지 제공자가 지원하는 자격 증명을 선택합니다.
-
테이블의 필드를 사용하여 양식을 작성합니다.
필드 설명 이름 이 자격 증명에 대한 고유하고 설명적인 이름입니다. 예로는 Amazon Web Services가 있습니다. 적용 대상 이 자격 증명을 사용할 수 있는 MID Server를 선택합니다. 모든 MID 서버 또는 특정 MID 서버 중에서 선택할 수 있습니다. 후자를 선택하면 MID 서버 필드가 나타납니다. 활성 자격 증명을 활성화하거나 비활성화하는 확인란입니다. AWS 계정 AWS 자격 증명이 외부 스토리지 제공자에 있는 경우 AWS 계정 ID를 입력합니다. MID 서버 이 자격 증명을 사용할 수 있는 MID Server를 하나 이상 선택하십시오. 자격 증명 ID 이 자격 증명이 외부 자격 증명 스토리지 제공자에 저장되는 이름을 입력합니다. 개인 자격 증명 ID CyberArk의 SNMPv3 개인 키 이름을 입력합니다. 이 필드는 자격 증명 저장소 유형 필드에서 CyberArk를 선택할 때만 SNMPv3에 표시됩니다. CyberArk에 개인 키를 사용하지 않는 경우에는 이 필드를 비워 둡니다. 자격 증명 별칭 특정 동작을 포함하는 이 자격 증명의 별칭을 선택합니다. 자세한 내용은 검색에 대한 자격 증명 별칭을 참조하십시오. 외부 자격 증명 스토어 외부 자격 증명 스토리지 시스템을 사용하려면 이 확인란을 선택합니다. 외부 저장소가 활성화되면 자격 증명 ID 필드가 나타납니다. 이 확인란이 표시되지 않으면 헤더 표시줄에서 메뉴 아이콘을 클릭하고 뷰 > 외부 저장소 컨텍스트 메뉴에서. 자격 증명 스토어 유형 CyberArk SNMPv3 개인 키를 사용하는 경우에만 CyberArk를 선택하십시오. 키 항목을 입력할 수 있도록 개인 정보 자격 증명 ID 필드가 표시됩니다. - 제출을 클릭합니다.