How we scale deployments with a custom GitOps engine : LinkedIn은 노드가 최대 5,000개인 클러스터를 250개 이상 운영하면서 배포에 Argo CD를 사용하고 있었다. CRD를 만들어 Argo CD로 배포하고, 사용자는 익숙한 Helm 차트를 사용했다. 하지만 배포가 늘어나면서 상태와 특정 배포를 연결하기 어려워졌다. 동기화 상태와 헬스 상태만으로는 배포 여부를 판단하기도 어려웠다. 서비스가 많아지면서 느려지기 시작했고 CRD를 매번 수정하기도 어려운 등 다양한 문제를 만났다. 결국 Argo CD가 초기엔 도움이 되었지만 지속적인 조정과 실시간 상태는 필요 없었기에 직접 GitOps 엔진을 구축하기로 했다. 새 엔진은 배포마다 격리되어 서로 영향을 주지 않아야 했다. PATCH 대신 PUT만 사용하고 배포를 끝까지 추적할 수 있어야 했다. 새 엔진으로 9개월 동안 마이그레이션한 결과, 배포 수는 3.7배 많아졌지만 배포 인프라 장애는 오히려 줄었고 배포 실패 감지도 훨씬 빨라졌다.(영어)
Hardening GitHub Actions Against Outside Threats : GitHub 액션으로 자격 증명을 탈취하고 릴리스 프로세스로 악성 패키지를 배포하는 보안 사고가 자주 발생하고 있다. 이런 외부 위협에 대응하는 방법을 설명한다. 액션을 참조할 때 v4, main을 사용하는 경우가 많은데, 공격자가 이를 바꿔치기하는 경우가 있다. gh-actions-lock로 사용 중인 워크플로우의 버전을 고정할 수 있다. 조직 정책으로 허용할 액션을 지정하고 Require lockfile을 활성화할 수 있다. SHA를 지정해도 중첩된 액션까지 고정되지는 않으므로 lockfile을 우선하고 SHA를 그다음 단계로 사용해야 한다. 또한 2023년 2월에 생성된 조직의 GITHUB_TOKEN에는 많은 권한이 포함되므로 permissions로 최소 권한을 지정해야 한다. pull_request_target은 신뢰할 수 있는 코드에서만 사용해야 한다. run: 안에 ${{ }}를 사용하면 해당 값이 인젝션에 악용될 수 있으므로 절대 사용하지 말아야 한다.(영어)
*sshole : Alpine 등 musl을 사용하는 리눅스에서 비밀번호 로그인이 허용되지 않은 SSH 계정도 256자 이상의 비밀번호를 입력하면 무조건 로그인되는 취약점이다. Unix에서는 로그인하면 안 되는 계정의 비밀번호를 *로 설정해 로그인이 안 되게 했다. 그런데 2012년 musl에서 비밀번호를 해싱하는 crypt()가 실패했을 때 NULL 대신 *를 반환하도록 바뀌었다. 또 계정의 존재 여부를 시간 차이로 알아내는 문제를 막기 위해 유효하지 않은 계정에도 crypt()를 실행하도록 바뀌었다. 그 뒤 10년간 아무도 발견하지 못했던 이 취약점이 이번에 드러났다.(영어)
Microsoft 365 Outage Exposes a Risk Bigger Than Downtime : 11월 12~13일에 걸쳐 Microsoft 365에 장애가 발생해 하루 넘게 서비스를 제공하지 못했다. 아직 보고서는 발표되지 않았지만, 보안 연결을 설정하는 서버 프로세스에 과부하가 발생해 요청 처리가 중단되었다. 일부 서버를 사용할 수 없게 되면서 부하가 다른 곳으로 옮겨가 서비스 중단이 더 넓게 확산되었다.(영어)
Cyber Chaos Monkey: Staying ahead of security threats with AI agents : Shopify는 실제 운영 인프라에서 상시 실행되는 에이전트 기반 취약점 탐지 시스템 Cyber Chaos Monkey(CCM)를 도입했다. CCM의 보안 점검은 보안 엔지니어의 가설이나 제보, 다른 단계의 피드백 루프를 바탕으로 Discovery에서 시작한다. 사이버 보안 모델을 사용해 취약점으로 이어질 수 있는 코드나 구성을 찾아내고, 찾은 단서를 Sandbox에 보내면 에이전트가 취약점을 이용한 공격을 시도한다. 테스트를 마치면 보고서를 Discovery로 보내 결과를 분석한다.(영어)
pull_request_target blocked by default December 2 : GitHub에서 Pull Request에서는 시크릿에 접근할 수 있지만 pull_request_target 이벤트에서는 시크릿에 접근할 수 있다. 이로 인한 보안 사고가 계속 발생함에 따라 GitHub이 12월 2일부터 모든 공개 저장소에서 기본적으로 pull_request_target 이벤트를 차단한다.(영어)
볼만한 링크
The Death of the Angel Investor : 슈퍼 엔젤 투자자 중 상당수가 자기 돈을 투자하기보다는 펀드를 조성해 2/20(2%의 관리보수, 20%의 성과보수)를 받는 편이 수익성이 높을 수 있다는 걸 깨달았다. 엔젤 투자자는 아이디어 단계부터 매출을 내는 단계까지 성장을 돕고, 그 이후에는 VC가 자금을 대는 식이었다. 이제는 매출 단계까지 걸리는 시간이 엄청나게 짧아져 VC에서도 프리시드 단계에 집중하는 펀드가 많이 생겼다. 또한 AI라면 초기부터 큰 규모의 투자를 받게 되므로 엔젤 투자자는 경쟁에서 밀려날 수 있는 상황이 되었다. 그럼에도 글을 쓴 Zach Holman은 엔젤 투자 자체가 보람이 있고 여러 혜택이 있기 때문에 새로운 엔젤 투자자가 많이 합류할 것이라고 보고 Dead Angels라는 정기 모임을 샌프란시스코에서 만든다고 한다.(영어)
IT 업계 뉴스
NVIDIA Announces CEO Transition : NVIDIA 이사회는 최근 불륜 사건으로 논란이 된 젠슨 황이 CEO와 이사회 이사직에서 즉시 사임한다고 발표했다. 수석 부사장이자 CFO인 Colette Kress가 임시 CEO를 맡기로 했다.(영어)
Retiring the contributor pool : ESLint에서 지난 5년간 기여자들에게 51,000 달러 이상을 지급했다. AI가 생성한 풀 리퀘스트가 늘어나자 이런 풀 리퀘스트에는 보상을 지급하지 않기로 결정했지만, 이를 구분하기가 어려워졌다. AI가 생성했는지 감시하는 사람들도 늘어나면서 원래 의도가 퇴색했다고 판단해 기여자 풀을 종료하기로 했다.(영어)
Launching the Vite Ecosystem Fund : Cloudflare는 VoidZero를 인수하면서 Vite의 오픈소스 생태계를 강화하기 위해 100만 달러 지원을 약속했다. 그 약속에 따라 이번에 Vite 생태계 펀드로 44개 프로젝트의 유지보수 관리자들에게 301,300 달러를 지원하기로 했다.(영어)
Anthropic’s Initial Public Offering : Anthropic의 상장을 홍보하는 페이지다. 3분기 기준 매출은 작년 대비 12배 증가한 17억 달러다. 최근 12개월 매출이 10만 달러 이상인 고객도 12배 증가해 11,900개 이상이다. 25년 1분기 이후 컴퓨팅 효율성이 4배 이상 증가했다. 조정 영업 이익률은 15%, 영업 이익률은 3%이며, 순손실은 233억 달러다. (영어)
Comments