Slack

Slack에서 승인 요청과 서버 알림을 받고, 메시지에서 승인 요청을 처리합니다.

Slack 연동 방식

Slack을 연결하면 승인 요청과 서버 알림이 팀이 이미 쓰고 있는 Slack 채널에 올라오고, 승인자는 콘솔을 열지 않고 메시지에서 바로 요청을 승인하거나 반려할 수 있습니다.

이 페이지는 Integrations에서 연결하는 Slack 앱 연동을 설명합니다. 수신 웹훅으로 Slack에 알림을 보내는 방법은 이와 별개인 더 단순한 방식입니다. Slack 앱과 Slack 웹훅을 참고하세요.

Slack 연동으로 할 수 있는 일

  • 채널에서 받는 승인 요청: 요청마다 승인, 반려 버튼이 달린 카드가 게시됩니다. Slack에서 내린 결정은 콘솔에서 내린 결정과 똑같이 처리되며, 결정 후에는 카드에 결과와 결정한 사람이 표시됩니다. 한 작업 세션에서 나온 요청은 하나의 스레드에 모입니다. 작업 세션의 요청을 Slack에서 승인을 참고하세요.
  • 같은 채널로 오는 알림: 오프라인이 된 서버, Slack 게시가 켜진 규칙의 메트릭 알림, Alpacon을 거치지 않고 서버에 들어온 로그인이 같은 채널에 게시됩니다. 세션의 AI 분석 결과가 심각이면 항상 게시됩니다. 높음이면 워크스페이스가 정기 보고서를 받지 않을 때만 게시됩니다. 알림 및 웹훅과 세션 위험도 분석을 참고하세요.
  • 다이렉트 메시지: Slack 계정이 연결된 멤버는 자신이 낸 요청을 다른 승인자가 결정하면 Alpacon 앱에서 다이렉트 메시지를 받습니다. 자신의 작업 세션 요청을 직접 승인할 수 있는 경우에는 그 요청도 먼저 다이렉트 메시지로 받습니다. Slack DM 수신 여부는 각 멤버가 알림 설정에서 관리합니다.

MFA가 필요한 요청처럼 버튼으로 처리할 수 없는 요청도 있습니다. 이런 요청의 카드에는 버튼 대신 콘솔로 가는 링크가 표시됩니다. Slack 카드에 표시되는 내용을 참고하세요.

연결할 수 있는 사람

  • 플랜: Essentials 또는 Enterprise 플랜이 필요합니다. Free 플랜에서는 Integrations의 Slack 카드에 업그레이드 안내가 표시되고 연결이 거부됩니다. 플랜과 결제를 참고하세요.
  • 역할: Slack 연결, 채널 지정, 멤버 계정 연결, 연결 해제는 Superuser가 합니다. Integrations는 왼쪽 사이드바의 관리자 영역에 있습니다.
  • Alpacon 워크스페이스 하나에 Slack 워크스페이스 하나: 다른 Slack 워크스페이스로 옮기려면 지금 연결을 먼저 해제하세요.

연결하려는 Slack 워크스페이스에서 앱을 설치할 수 있는 권한도 있어야 합니다.

Slack 연결하기

Slack 페이지 열기

왼쪽 사이드바에서 Integrations를 클릭한 다음 Slack 카드를 클릭합니다.

Alpacon 앱 허용

Slack 연결하기를 클릭하면 Slack이 열리고 Slack 워크스페이스에 Alpacon 앱을 허용할지 묻습니다. 약 10분 안에 허용하세요. 시간이 지나거나 취소하면 아무것도 연결되지 않으며, 처음부터 다시 시작하면 됩니다.

연결 확인

Alpacon의 Slack 페이지로 돌아오면 Slack 워크스페이스 이름 옆에 연결됨이 표시됩니다. 이때 Slack 이메일과 Alpacon 이메일이 같은 멤버는 자동으로 연결됩니다.

채널 지정

다음 섹션에 따라 게시물을 받을 채널을 지정합니다. 채널을 지정하기 전에는 채널에 아무것도 게시되지 않습니다.

Slack 앱 권한

앱을 연결할 때 Slack에서 다음 권한을 승인합니다. 연결한 뒤에는 Slack 페이지의 권한 범위에서 부여한 권한을 다시 확인할 수 있습니다.

권한사용 목적
chat:write, chat:write.public지정한 채널에 승인 요청과 알림 게시. 앱이 참여하지 않은 공개 채널에도 게시
im:write요청과 결정에 관한 다이렉트 메시지 전송
channels:read, groups:read공개 채널과 앱이 참여한 비공개 채널 조회
users:read계정 연결에 필요한 Slack 멤버와 프로필 조회
users:read.email이메일로 Slack 멤버와 Alpacon 계정 연결

채널 지정

채널은 개요 탭의 알림 채널 카드에서 지정합니다.

  1. Slack에서 채널 세부 정보를 열어 채널 ID(예: C0123ABCD)를 확인합니다.
  2. 기본 채널 ID에 입력하고 저장을 클릭합니다.

저장하면 ID 옆에 채널 이름이 표시되고 상태가 알림 켜짐으로 바뀝니다. 채널 게시를 멈추려면 입력란을 비우고 저장하세요. 상태가 알림 꺼짐으로 바뀝니다.

공개 채널에는 Alpacon 앱이 채널 멤버가 아니어도 게시할 수 있습니다. 비공개 채널은 먼저 Alpacon 앱을 채널에 초대해야 합니다.

채널 게시물은 승인 요청, 서버 알림, 직접 로그인 알림 모두 이 채널 하나로 갑니다. 세션의 AI 분석 결과가 심각이면 항상 게시됩니다. 높음이면 워크스페이스가 정기 보고서를 받지 않을 때만 게시됩니다. 세션 위험도 분석을 참고하세요. 카드에는 누가 무엇을 요청했는지, 명령줄, 서버 이름, 계정이 표시되므로 채널 참여자는 승인자와 검토자로 한정하세요.

Free 플랜에서는 채널을 바꿀 수 없으므로, Free로 내린 워크스페이스는 기존 채널을 그대로 씁니다. 연결 해제는 모든 플랜에서 할 수 있습니다.

채널을 확인하려면 다른 멤버에게 승인 대기 중인 작업 세션 요청을 제출해 달라고 하세요. 그런 다음 Slack에 요청 카드가 오는지 확인하세요. 본인을 위해 요청한 세션은 즉시 승인되므로 요청 카드가 게시되지 않습니다. 연결 화면에는 테스트 알림 버튼이 없습니다. 카드가 오지 않으면 메시지가 오지 않을 때를 확인하세요.

멤버와 Slack 계정 연결

버튼은 Slack 계정이 Alpacon 계정에 연결된 멤버만 쓸 수 있습니다. 다이렉트 메시지와 멘션도 연결된 멤버에게만 갑니다.

Slack을 연결할 때 Slack 이메일과 Alpacon 이메일이 같은 멤버는 모두 자동으로 연결됩니다. 그 뒤에 합류했거나 두 이메일이 다른 멤버는 Superuser가 직접 연결합니다.

  1. Slack 페이지에서 사용자 탭을 엽니다. 연결된 멤버 목록과 함께 연결 방식이 이메일 매칭 또는 수동으로 표시됩니다.
  2. 사용자 연결을 클릭하고 Alpacon 사용자와 Slack 멤버를 골라 저장합니다. 두 목록에는 아직 연결되지 않은 계정만 나오며, 연결된 Slack 워크스페이스에 속한 사람만 연결할 수 있습니다.

연결을 없애려면 행의 메뉴에서 연결 해제를 클릭합니다.

채널 카드에서 멘션이 붙는 경우는 두 가지입니다. 요청자가 직접 승인할 수 있는 요청이 다른 승인자에게 넘어갈 때, 그 카드는 계정이 연결된 다른 승인자를 멘션합니다. 자신의 작업 세션 요청을 승인할 수 있는 경우를 참고하세요. 작업 세션 스레드에서는 그 세션을 승인했거나 채널에 게시된 요청을 승인한 승인자를 답글에서 멘션합니다. 작업 세션의 요청을 Slack에서 승인을 참고하세요.

Slack 카드에 표시되는 내용

승인 카드 맨 위에는 요청자(AI 에이전트가 있으면 에이전트 이름 포함)와 요청 내용을 담은 제목이 표시됩니다. 그 아래에 다음 항목이 나옵니다.

  • 세션 연장을 제외한 요청의 Type(요청 유형)과 Submitted(요청 시각, UTC 오프셋 포함)
  • 요청 대상: 계정이나 그룹 이름, 토큰 이름, 작업 세션 제목, 보류된 명령이라면 명령줄 전체
  • 보류된 명령의 Risk level(위험 수준), sudo로 실행되는 경우 Privilege. sudo를 실행하는 보류된 명령을 참고하세요.
  • 보류된 명령의 Origin과 Session(아래 설명 참고)
  • 작업 세션 요청의 Target account(세션이 실행될 계정)
  • 요청자가 남긴 설명, 승인이 필요한 이유와 접근 규칙 링크, 요청이 나온 Alpacon 워크스페이스 이름

Slack 카드의 항목 이름과 일부 안내 문구는 한국어로 번역되지 않아 영어로 표시될 수 있습니다.

세션 연장 카드에는 Expiry(현재와 요청한 종료 시각 및 추가 시간, 예: 21:32 → 23:32 UTC-7 (+2 h))와 Target servers(처음 5대, 나머지는 +N more)가 표시됩니다. Type과 Submitted 항목은 없습니다. 요청자의 이름이 들어간 제목, 설명, 승인 사유와 버튼은 유지되며, 토큰으로 요청한 경우 Origin도 표시됩니다. 결정 기한, 담당자, 최초 승인 정보, 연장 횟수는 콘솔에서만 확인할 수 있습니다.

출처와 세션

보류된 명령의 카드에는 그 명령이 어디서 왔는지가 표시됩니다.

  • Origin: 명령을 실행한 토큰입니다. API 토큰이면 API token deploy-bot (jane)처럼 토큰 소유자와 함께, 서비스 토큰이면 Service token ci-runner (app release-bot)처럼 애플리케이션과 함께 표시됩니다. 토큰 없이 대화형으로 실행한 명령에는 Origin 항목이 없습니다.
  • Session: 명령이 실행된 작업 세션의 제목과 그 세션을 연 사람입니다. No work session(작업 세션 없음)은 명령이 작업 세션 밖에서 실행됐다는 뜻입니다. 토큰으로 실행한 명령은 이럴 수 있으니, 이 표시가 보이면 명령을 더 꼼꼼히 확인하세요.

두 항목은 요청이 결정된 뒤에도 카드에 남습니다.

버튼

  • 승인, 반려 버튼으로 요청을 바로 처리합니다.
  • 결정을 콘솔에서 해야 하는 요청은 두 버튼 대신 콘솔을 여는 버튼 하나만 표시됩니다. MFA가 필요한 요청, 카드에 다 보여 줄 수 없을 만큼 긴 명령, 스크립트를 실행하는 요청이 여기에 해당하며, 카드에 이유가 함께 표시됩니다. 결정 시 MFA가 필요한 경우를 참고하세요.
  • 요청을 승인할 수 없는 경우에는 반려 버튼만 표시됩니다. 요청 이후 sudo 정책이 바뀐 경우가 그 예이며, 카드에 이유가 함께 표시됩니다.

승인이 두 번 이상 필요한 요청에서 승인 버튼을 누르면 내 표가 기록되고, “Vote recorded (1/2 approvals).” 메시지가 나에게만 표시됩니다. 요청이 결정될 때까지 카드의 버튼은 그대로 남습니다. Slack이나 콘솔에서 요청이 결정되면 카드가 결과와 결정한 사람으로 바뀝니다. 이미 결정된 요청의 카드에서 버튼을 누르면 “This request has already been reviewed.”라는 답이 표시됩니다.

요청을 낸 사람의 Slack 계정이 연결되어 있고 다른 승인자가 요청을 결정했다면 결정 결과가 다이렉트 메시지로도 전달됩니다. 요청자가 직접 결정한 요청에는 이 메시지가 가지 않습니다.

Slack 연결 해제

개요 탭에서 연결 해제를 클릭하고, 확인을 위해 Slack 워크스페이스 이름을 입력합니다. 연결을 해제하면 Alpacon 앱이 보내는 Slack 게시물과 다이렉트 메시지가 모두 멈추고, Slack 워크스페이스에서 Alpacon 앱이 제거되며, 채널 설정과 멤버 계정 연결이 모두 삭제됩니다. Slack도 승인 채널에서 제거됩니다. 요청은 계속 콘솔에서 결정할 수 있고, Slack 웹훅은 그대로 게시됩니다.

다시 연결하면 처음부터 시작합니다. 채널을 다시 지정하고, 이메일로 자동 연결되지 않는 멤버는 직접 연결하세요.

메시지가 오지 않을 때

다음 순서로 확인하세요.

  • 채널이 지정되어 있는지: 알림 채널 카드에 알림 꺼짐이 표시되면 채널이 지정되지 않아 채널에 아무것도 게시되지 않습니다.
  • 앱이 채널에 게시할 수 있는지: 비공개 채널이면 Alpacon 앱을 채널에 초대하세요. 공개 채널인데도 아무것도 오지 않으면 그 채널에도 앱을 초대하세요.
  • Slack에 Alpacon 앱이 남아 있는지: 누군가 Slack 쪽에서 앱을 제거했다면 Alpacon에는 연결된 것으로 표시되지만 아무것도 전달되지 않습니다. 연결 해제를 클릭한 다음 Slack 연결하기로 다시 연결하세요.
  • Slack에 게시되는 알림인지: 메트릭 알림은 규칙에서 Slack 채널 게시가 켜져 있고 심각도가 허용할 때만 게시됩니다. 규칙에 설정할 수 있는 항목을 참고하세요. Slack에 게시되지 않는 알림도 있으니 알림 및 웹훅을 확인하세요.
  • 다이렉트 메시지가 켜져 있는지: DM이 오지 않는다면 Slack 계정이 연결되지 않았거나 알림 설정에서 Slack DM을 꺼 두었을 수 있습니다. 직접 결정한 요청에는 결정 DM이 오지 않습니다.

버튼을 눌렀을 때 “This Slack account isn’t linked to Alpacon. Ask an admin to link it.”가 표시되면 Superuser에게 계정 연결을 요청하세요. “You are not authorized to review this request.”가 표시되면 그 요청의 승인자가 아닌 것입니다. 요청 관리를 참고하세요.

Slack 앱과 Slack 웹훅

Slack과 연동하는 방법은 두 가지이며, 서로 영향을 주지 않습니다.

Slack 앱(이 페이지)Slack 웹훅
설정 위치Integrations → Slack워크스페이스 설정 → Integrations → Webhook
Slack에서 승인·반려가능불가
다이렉트 메시지와 멘션가능불가
작업 세션 스레드가능불가
채널워크스페이스당 채널 하나웹훅 URL마다 채널 하나

Slack에서 승인까지 처리하려면 앱을 연결하세요. 웹훅은 알림 이벤트를 채널로 전달하기만 합니다. 웹훅과 웹훅 설정을 참고하세요.

관련 문서

최종 수정: