콘텐츠로 이동

Salesforce에 연결

PlaidCloud를 Salesforce 조직에 연결하여 표준 및 사용자 지정 개체(Accounts, Opportunities, Leads, Campaigns, 사용자가 만든 __c 개체)를 프로젝트 테이블로 추출합니다. 개체 목록, 필드 목록, 모든 열의 형식은 조직에서 직접 읽어 옵니다.

Salesforce 측 설정은 관리자의 작업이며 전체 진행에서 핵심 경로에 해당합니다. External Client App, 앱이 Run As로 실행할 통합 사용자, 앱의 컨슈머 키와 시크릿이 필요합니다. 이 가이드에서는 이 설정을 다룬 다음 PlaidCloud 연결, 테스트, 첫 번째 추출을 설명합니다.

Salesforce에서 다음이 필요합니다.

  • 설정에서 앱을 만들고 해당 정책을 편집할 수 있는 관리자.
  • 통합이 Run As로 실행할 Salesforce 사용자. 개인 로그인이 아닌 전용 통합 사용자를 사용하십시오. PlaidCloud가 읽는 모든 데이터는 이 사용자의 범위로 제한되며, 개인 계정은 역할이 바뀌면 함께 바뀝니다.
  • API Enabled가 지정된 해당 사용자의 프로필 또는 권한 집합.

PlaidCloud에서는 연결을 만들 권한(Tools > Connections)이 필요합니다.

모든 Salesforce 조직에는 My Domain이 있으며, 그 이름이 PlaidCloud가 연결하는 호스트입니다. Salesforce에서 설정으로 이동하여 빠른 찾기에서 My Domain을 검색하면 도메인 이름이 표시됩니다. 호스트는 해당 이름에 .my.salesforce.com을 붙인 것입니다.

조직 호스트
프로덕션 및 Developer Edition mycompany.my.salesforce.com
샌드박스 mycompany--uat.sandbox.my.salesforce.com - 도메인 이름, --, 샌드박스 이름, 그리고 .sandbox.my.salesforce.com

login.salesforce.com이나 test.salesforce.com이 아닌 조직 고유의 My Domain 호스트를 사용하십시오. 클라이언트 자격 증명 흐름은 특정 조직에 대해 인증하는데, 일반 로그인 호스트로는 조직을 지정할 수 없습니다.

  1. 설정에서 빠른 찾기에 External Client App Manager를 검색하고 New External Client App을 클릭합니다.

  2. External Client App Name(예: PlaidCloud Integration), 자동으로 채워지는 API Name, Contact Email을 입력합니다. Distribution State는 Local로 둡니다.

  3. API (Enable OAuth) 에서 OAuth를 켭니다. 이 흐름은 어디로도 리디렉션하지 않지만 양식에서 Callback URL을 요구하므로, https://localhost/를 임시 값으로 사용해도 됩니다.

  4. OAuth 범위 Manage user data via APIs (api) 를 추가합니다. REST 및 Bulk API가 읽기에 사용하는 범위입니다.

  5. 앱을 만듭니다.

  6. 앱을 열고 Policies로 이동하여 Edit를 클릭합니다. 클라이언트 자격 증명 흐름을 활성화하고 Run As를 통합 사용자로 설정합니다.

  7. 같은 페이지에서 Permitted Users를 Admin approved users are pre-authorized로 설정한 다음, 해당 Run As 사용자의 프로필 또는 권한 집합을 통해 앱을 이 사용자에게 할당합니다.

  8. 앱의 Settings > OAuth Settings로 이동하여 Consumer Key and Secret을 엽니다. Salesforce가 신원을 확인한 후 두 값을 몇 분 동안 표시합니다. 안전한 곳에 복사해 두십시오. 다음 단계에서 PlaidCloud에 붙여 넣어야 하며, 시크릿은 이후 PlaidCloud에서 다시 읽을 수 없습니다.

클라이언트 자격 증명 흐름에는 대화형 로그인이 없으므로 앱은 하나의 Salesforce ID, 즉 Run As 설정에 지정된 사용자를 사용합니다. 이 연결을 통해 PlaidCloud가 읽는 모든 데이터는 해당 사용자로서 읽힙니다.

이 사용자를 신중하게 프로비저닝하십시오.

  • 추출하려는 개체에 대한 액세스 권한을 부여합니다. 프로필 또는 권한 집합을 통해 개체에 대한 읽기 권한과 선택하려는 필드에 대한 필드 수준 읽기 권한을 부여합니다.
  • 필요한 공유 권한을 부여합니다. 행 수준 액세스는 조직의 공유 모델(역할 계층, 공유 규칙, 레코드 소유권)에서 결정됩니다. 계층에서 낮은 위치에 있는 통합 사용자는 영업 운영 사용자가 보는 레코드의 일부만 볼 수 있습니다.
  • API Enabled를 부여합니다. 그렇지 않으면 흐름이 인증조차 할 수 없습니다.
  • 일상적인 관리 작업과 분리합니다. 관련 없는 이유로 권한이 바뀌는 사용자를 사용하면 저장된 모든 추출의 결과가 달라집니다.

실제로 어떤 사용자가 지정되었는지 확인하십시오. PlaidCloud의 연결 테스트는 Run As 사용자의 이름을 알려 주므로, 데이터를 가져오기 전에 앱이 잘못된 ID를 가리키는 문제를 가장 간단하게 잡아낼 수 있습니다.

Run As 사용자가 모든 것의 범위를 결정합니다

섹션 제목: “Run As 사용자가 모든 것의 범위를 결정합니다”

Run As 사용자가 추출을 제한하는 두 가지 방식은 서로 반대 방향으로 실패하므로, 이 부분은 두 번 읽어 볼 가치가 있습니다.

행 수준 공유는 조용히 적용됩니다. Run As 사용자가 볼 수 없는 레코드는 결과에 단순히 포함되지 않습니다. 오류도, 경고도, 제외된 건수도 없습니다. 레코드가 250,000건인 개체에서 40,000행을 추출한 결과는 레코드가 40,000건인 개체를 완전히 추출한 결과와 똑같아 보입니다. Salesforce가 해당 행의 존재를 알려 주지 않으므로 PlaidCloud에서는 그 차이를 감지할 수 없습니다. 따라서 행 수가 적어 보이면 다른 곳을 살펴보기 전에 Run As 사용자의 역할, 공유 규칙, 레코드 소유권을 먼저 확인하십시오. 본인이 아니라 동일한 사용자로 Salesforce에서 실행한 보고서와 비교하십시오.

필드 수준 보안은 요란하게 실패합니다. PlaidCloud는 전송하는 쿼리에 선택한 모든 필드를 명시적으로 지정하므로, Run As 사용자가 읽을 수 없는 필드가 있으면 해당 필드를 지목하는 오류와 함께 추출 전체가 실패합니다. 일부만 저장되거나, 감지되지 않은 채 빈 값이 반환되는 일은 없습니다.

이 비대칭에는 실질적인 결과가 따릅니다. 정상적으로 실행되던 저장된 단계는 누군가 선택된 필드 하나의 필드 수준 읽기 권한을 취소하는 순간 실행되지 않습니다. 단계도 PlaidCloud도 바뀌지 않았고, Run As 사용자의 필드 액세스만 바뀐 것입니다. 몇 달간 실행되던 추출이 갑자기 단일 필드를 지목하며 실패한다면 이 경우입니다. Run As 사용자의 해당 필드 권한을 복원하거나 단계에서 해당 필드의 선택을 해제하십시오.

  1. Tools > Connections를 열고 New Connection을 클릭합니다.

  2. 메뉴에서 REST - Salesforce를 선택합니다.

  3. 연결에 계정 이름을 지정합니다(예: Salesforce Prod).

  4. 호스트 또는 IP 주소를 위에서 확인한 조직의 My Domain 호스트로 설정합니다.

  5. 앱의 컨슈머 키를 클라이언트 ID에, 컨슈머 시크릿을 클라이언트 시크릿에 붙여 넣습니다.

  6. 보안 모델을 설정하여 워크스페이스에서 이 연결을 사용할 수 있는 사람을 제어하고, 활성(액세스 허용) 을 선택한 상태로 두고 Create를 클릭합니다.

Test Connection을 클릭합니다. PlaidCloud가 실제 토큰 교환을 수행하고 세 가지를 보고합니다.

보고 항목 확인할 내용
조직 ID 의도한 조직인지 확인합니다. 프로덕션 환경에 샌드박스 자격 증명이 저장된 경우를 가장 빠르게 찾아낼 수 있습니다.
API 버전 이 조직이 지원하는 최고 버전입니다. 추출은 반드시 이 버전이 아니라 연결에 고정된 버전으로 실행됩니다.
Run As 사용자 개인이나 관리자가 아니라 프로비저닝한 통합 사용자인지 확인합니다.

인증에 실패하면 시크릿은 저장 후 다시 읽을 수 없으므로 클라이언트 ID와 시크릿을 다시 입력하라는 안내가 표시됩니다.

  1. 워크플로에 Salesforce: Query Object 단계를 추가합니다.

  2. Salesforce Connection과 환경을 설정한 다음 개체를 선택합니다. Account부터 시작하십시오.

  3. 몇 개의 필드를 선택합니다. 저장 형식 열에는 Salesforce 자체 필드 메타데이터에서 가져온, 각 열이 실제로 갖게 될 형식이 표시됩니다. Id는 항상 포함됩니다.

  4. 대상 테이블을 임시 테이블로 설정하고 단계를 실행합니다(워크플로에서 단일 단계 실행 참조).

대상 테이블에 데이터가 채워지면 앱, Run As 사용자의 액세스, 호스트가 모두 올바른 것입니다. 출력을 기반으로 작업하기 전에 단계의 참조 페이지를 읽어 보십시오. 추출 기간은 한 번만 실행되고, 삭제는 추적되지 않으며, 일부 필드 형식은 아예 추출할 수 없고, 무인 반복 가져오기는 창 태그에서 워크플로 변수를 통해 각 기간을 지정합니다.

증상 원인 해결 방법
앱을 만든 직후 인증에 실패합니다 앱이 Salesforce 인프라 전반에 아직 전파되지 않았습니다. 아무것도 변경하지 말고 몇 분 기다린 후 다시 테스트합니다.
방금 붙여 넣은 자격 증명으로 인증에 실패합니다 앞뒤 공백이 포함된 채 컨슈머 키 또는 시크릿을 복사했거나, 다른 앱의 시크릿입니다. Settings > OAuth Settings > Consumer Key and Secret에서 두 값을 다시 복사하여 붙여 넣습니다.
앱이 올바른 것 같은데 인증에 실패합니다 앱의 정책을 편집한 적이 없어 클라이언트 자격 증명 흐름이 활성화되지 않았거나 Run As 사용자가 없습니다. 앱의 Policies를 열고 Edit를 클릭하여 클라이언트 자격 증명 흐름을 활성화하고 Run As를 설정합니다.
PlaidCloud에서는 인증에 실패하지만 같은 앱이 사용자 컴퓨터에서는 작동합니다 IP 제한. Run As 사용자 프로필의 Login IP Ranges 또는 IP 완화가 없는 앱이 토큰 교환을 거부하며, Salesforce는 이것이 원인이라는 단서를 주지 않습니다. 이 앱의 IP 적용을 완화하거나, 프로필의 Login IP Ranges에 PlaidCloud의 송신 주소를 추가합니다. 테넌트의 주소는 PlaidCloud 지원팀에 문의하십시오.
작동하던 연결이 더 이상 인증되지 않습니다 Run As 사용자가 비활성화되었거나, 앱이 취소되었거나, 조직의 세션 또는 IP 정책이 변경되었습니다. Salesforce에서 사용자와 앱을 확인합니다. PlaidCloud는 오래된 토큰을 폐기하고 한 번 자동으로 재시도하므로, 계속 실패한다면 조직에 실제 변경이 있는 것입니다.
추출이 필드 하나를 지목하며 실패합니다 Run As 사용자가 선택된 필드의 필드 수준 읽기 권한을 잃었습니다. Run As 사용자가 모든 것의 범위를 결정합니다를 참조하십시오.