업데이트로 돌아가기
New releaseAug 5, 2026

safe-chain v1.5.15

npm, yarn, pnpm, npx, pnpx, pip, uv 및 poetry를 통해 설치된 악성 코드로부터 Aikido Safe Chain으로 보호하세요. 무료로 사용 가능하며 토큰이 필요 없습니다.

공유

Aikido Safe Chain

Aikido Safe Chain

NPM Version NPM Downloads

  • 개발자 노트북과 CI/CD에서 멀웨어 차단
  • npm 및 PyPI 지원 더 많은 패키지 매니저 지원 예정
  • 48시간보다 최신 패키지 차단 빌드를 깨지 않으면서
  • 토큰 불필요, 무료, 빌드 데이터 공유 없음

npm 및 PyPI 외에도 보호가 필요하신가요?

Aikido Device Protection은 Safe Chain을 기반으로 하여 패키지 및 확장 프로그램 보안을 더 많은 생태계로 확장합니다: npm, PyPI, VS Code, Open VSX - (Cursor, Windsurf, Kiro, Vs Codium, ...), Maven, NuGet, Chrome 확장 프로그램, Go, Skills.sh AI 스킬, Ruby, Rust 등.

중앙 집중식 정책 관리, 요청-승인 워크플로, 조직 내 모든 개발자 워크스테이션에 대한 가시성을 확보하세요. 동일한 Aikido Intel 피드로 구동됩니다. 수동으로 배포하거나 MDM 도구(Jamf, Fleet, Iru)를 통해 관리할 수 있습니다.


Aikido Safe Chain은 다음 패키지 매니저를 지원합니다:

  • 📦 npm
  • 📦 npx
  • 📦 yarn
  • 📦 pnpm
  • 📦 pnpx
  • 📦 rush
  • 📦 rushx
  • 📦 bun
  • 📦 bunx
  • 📦 pip
  • 📦 pip3
  • 📦 uv
  • 📦 poetry
  • 📦 uvx
  • 📦 pipx
  • 📦 pdm

사용법

Aikido Safe Chain 데모

설치

Aikido Safe Chain 설치는 설치 스크립트를 사용하면 쉽습니다.

Unix/Linux/macOS```shell

curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
&& echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c -
&& sh /tmp/install-safe-chain.sh
&& rm /tmp/install-safe-chain.sh

### Windows (PowerShell)```powershell
$installer = Join-Path $env:TEMP "install-safe-chain.ps1"
Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing
$expectedHash = "5FC22EEF74814BEF6828AA07C0EAEC79598F343F98B94A4ACAB823769AD56DA1"
if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) {
    Remove-Item $installer -ErrorAction SilentlyContinue
    throw "Checksum verification failed for install-safe-chain.ps1"
}
& $installer
Remove-Item $installer

The install commands above always reference a specific release. To install a different version, replace the version with your desired version number. All available versions are on the releases page.

Download integrity

The install scripts are served from a versioned release URL (releases/download/1.5.15/...). GitHub releases are immutable — once an artifact is published at a versioned URL it cannot be modified or replaced, so the file you download is guaranteed to be exactly what was released.

Verify the installation

  1. ❗Restart your terminal to start using the Aikido Safe Chain.

    • This step is crucial as it ensures that the shell aliases for npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, pip, pip3, poetry, uv, uvx, pipx and pdm are loaded correctly. If you do not restart your terminal, the aliases will not be available.
  2. Verify the installation by running the verification command: ```shell npm safe-chain-verify pnpm safe-chain-verify pip safe-chain-verify uv safe-chain-verify

    Any other supported package manager: {packagemanager} safe-chain-verify

  • 출력에 "OK: Safe-chain works!"가 표시되어 Aikido Safe Chain이 올바르게 설치되어 실행 중임을 확인할 수 있습니다.
  1. (선택 사항) 악성 코드 차단 테스트 — 테스트 패키지 설치를 시도합니다:

    JavaScript/Node.js의 경우: ```shell npm install safe-chain-test

Python의 경우: ```shell pip3 install safe-chain-pi-test

- 출력에는 Aikido Safe Chain이 이러한 테스트 패키지들을 악성코드로 플래그하여 설치를 차단하고 있음이 표시되어야 합니다.

`npm`, `npx`, `yarn`, `pnpm`, `pnpx`, `rush`, `rushx`, `bun`, `bunx`, `pip`, `pip3`, `uv`, `uvx`, `poetry`, `pipx`, `pdm` 명령을 실행할 때 Aikido Safe Chain은 설치하려는 패키지에서 악성코드를 자동으로 검사합니다. 또한 사용 가능한 경우 pip에 대한 Python 모듈 호출(예: `python -m pip install ...`, `python3 -m pip download ...`)도 가로챕니다. 악성코드가 감지되면 명령을 종료하라는 프롬프트가 표시됩니다.

다음 명령으로 설치된 버전을 확인할 수 있습니다:```shell
safe-chain --version

작동 방식

악성코드 차단

Aikido Safe Chain은 npm 레지스트리와 PyPI에서 패키지 다운로드를 가로채는 경량 프록시 서버를 실행하여 작동합니다. npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, pip, pip3, uv, uvx, poetry, pipx 또는 pdm 명령을 실행하면 모든 패키지 다운로드가 이 로컬 프록시를 통해 라우팅되며, 프록시는 Aikido Intel - Open Sources Threat Intelligence 를 기준으로 패키지를 실시간으로 검증합니다. 어떤 패키지(중첩 의존성 포함)에서 악성코드가 감지되면 프록시는 악성 코드가 사용자 머신에 도달하기 전에 다운로드를 차단합니다.

최소 패키지 연령

Safe Chain은 지원되는 생태계에 대해 최소 패키지 연령 검사를 적용합니다.

현재 적용 방식은 생태계별로 다릅니다:

  • npm 기반 패키지 관리자:
    • 일반 패키지 해석 중에 Safe Chain은 레지스트리가 반환하는 패키지 메타데이터에서 구성된 최소 연령보다 최신인 버전을 숨깁니다.
    • 해당 메타데이터 흐름을 우회하는 직접 패키지 다운로드 요청의 경우 Safe Chain은 새로 게시된 패키지의 캐시된 목록을 사용하여 요청 자체를 차단할 수 있습니다.
  • Python 패키지 관리자:
    • 패키지 해석 중에 Safe Chain은 PyPI 메타데이터 응답에서 너무 최신인 파일과 릴리스를 숨깁니다.
    • 해당 메타데이터 흐름을 우회하는 직접 패키지 다운로드 요청의 경우 Safe Chain은 새로 게시된 패키지의 캐시된 목록을 사용하여 요청 자체를 차단할 수 있습니다.

기본적으로 최소 패키지 연령은 48시간입니다. 이는 새로 게시된 패키지가 탐지되지 않은 위협을 포함할 가능성이 가장 높은 중요한 기간 동안 추가 보안 계층을 제공합니다. 이 임계값을 구성하거나 이 보호 기능을 완전히 우회할 수 있습니다. 아래의 최소 패키지 연령 구성 섹션을 참조하세요.

셸 통합

Aikido Safe Chain은 셸과 통합되어 npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx 및 Python 패키지 관리자(pip, uv, uvx, poetry, pipx, pdm)를 사용할 때 원활한 환경을 제공합니다. 이러한 명령에 대한 별칭을 설정하여 원래 명령을 실행하기 전에 프록시 서버를 관리하는 Aikido Safe Chain 명령으로 래핑합니다. 현재 지원하는 셸은 다음과 같습니다:

  • Bash
  • Zsh
  • Fish
  • PowerShell
  • PowerShell Core

셸 통합에 대한 자세한 내용은 셸 통합 문서에서 확인할 수 있습니다.

제거

Aikido Safe Chain을 제거하려면 한 줄짜리 제거 프로그램을 사용하세요:

Unix/Linux/macOS```shell

curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/uninstall-safe-chain.sh | sh

### Windows (PowerShell)```powershell
iex (iwr "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/uninstall-safe-chain.ps1" -UseBasicParsing)

❗터미널을 다시 시작하세요 제거 후 모든 별칭이 제거되었는지 확인하려면.

설정

로깅

--safe-chain-logging 플래그 또는 SAFE_CHAIN_LOGGING 환경 변수를 사용하여 Aikido Safe Chain의 출력을 제어할 수 있습니다.

설정 옵션

로깅 수준은 여러 소스를 통해 설정할 수 있습니다(우선순위 순서):

  1. CLI 인수(최우선순위):

    • --safe-chain-logging=silent - Aikido Safe Chain의 모든 출력을 맬웨어가 차단된 경우를 제외하고 억제합니다. 패키지 관리자 출력은 평소처럼 stdout에 기록되며, Safe Chain은 맬웨어를 차단하여 프로세스를 종료시킬 때만 짧은 메시지를 기록합니다.

      npm install express --safe-chain-logging=silent
      
    • --safe-chain-logging=verbose - Aikido Safe Chain의 상세한 진단 출력을 활성화합니다. 문제를 해결하거나 Safe Chain이 내부적으로 무엇을 하는지 이해하는 데 유용합니다.

      npm install express --safe-chain-logging=verbose
      
  2. 환경 변수: ```shell export SAFE_CHAIN_LOGGING=verbose npm install express

유효한 값: silent, normal, verbose

이는 터미널 세션이나 CI/CD 환경의 모든 패키지 관리자 명령에 기본 로깅 수준을 설정하는 데 유용합니다.

파일 로깅

--safe-chain-log-file 플래그 또는 SAFE_CHAIN_LOG_FILE 환경 변수를 사용하여 Aikido Safe Chain 출력을 로그 파일에 미러링할 수 있습니다. 파일 로깅은 기본적으로 비활성화되어 있으며 경로가 설정되면 활성화됩니다. 파일 형식(--safe-chain-log-file-format)과 상세 수준(--safe-chain-log-file-verbosity)은 터미널 출력과 독립적으로 제어됩니다.

구성 옵션

다음 중 하나를 통해 설정합니다(우선순위 순):

  1. CLI 인수 (최우선 순위): ```shell npm install express
    --safe-chain-log-file=~/safe-chain.log
    --safe-chain-log-file-format=plain
    --safe-chain-log-file-verbosity=normal
  2. 환경 변수: ```shell export SAFE_CHAIN_LOG_FILE=~/safe-chain.log export SAFE_CHAIN_LOG_FILE_FORMAT=plain export SAFE_CHAIN_LOG_FILE_VERBOSITY=normal
  3. 설정 파일 (~/.safe-chain/config.json): ```json { "logFile": "~/safe-chain.log", "logFileFormat": "plain", "logFileVerbosity": "normal" }

logFileFormatjson (기본값) 또는 plain.

logFileVerbositysilent, normal, 또는 verbose (기본값). --safe-chain-logging과 무관합니다.

최소 패키지 연령

Safe Chain이 패키지 설치를 허용하기 전에 패키지가 존재해야 하는 기간을 구성할 수 있습니다. 기본적으로 패키지는 설치되기 전에 최소 48시간이 지나야 합니다.

npm 기반 패키지 관리자의 경우 이 검사에는 현재 두 가지 적용 모드가 있습니다.

  • Safe Chain은 일반적인 의존성 해석 중에 패키지 메타데이터에서 너무 새로운 버전을 숨깁니다.
  • Safe Chain은 캐시된 새 릴리스 패키지 목록과 일치하는 직접 패키지 다운로드 요청을 차단합니다.

Python 패키지 관리자의 경우 이 검사에는 현재 두 가지 적용 모드가 있습니다.

  • Safe Chain은 의존성 해석 중에 PyPI 메타데이터에서 너무 새로운 파일 및 릴리스를 숨깁니다.
  • Safe Chain은 캐시된 새 릴리스 패키지 목록과 일치하는 직접 패키지 다운로드 요청을 차단합니다.

구성 옵션

최소 패키지 연령은 여러 소스를 통해 설정할 수 있습니다(우선순위 순).

  1. CLI 인자 (최우선순위): ```shell npm install express --safe-chain-minimum-package-age-hours=48
  2. 환경 변수: ```shell export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_HOURS=48 npm install express
  3. 설정 파일 (~/.safe-chain/config.json): ```json { "minimumPackageAgeHours": 48 }

패키지 제외

환경 변수 또는 구성 파일을 통해 신뢰된 패키지를 최소 사용 기간 필터링에서 제외합니다(둘 다 병합됨). 조직의 모든 패키지를 신뢰하려면 @scope/*를 사용하세요:```shell export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS="@aikidosec/*"

The input chunk appears to be empty — no translatable Markdown content was provided after "INPUT:". Please supply the chunk text and I will translate it into Korean.```json
{
  "npm": {
    "minimumPackageAgeExclusions": ["@aikidosec/*"]
  },
  "pip": {
    "minimumPackageAgeExclusions": ["requests"]
  }
}

사용자 지정 레지스트리

Safe Chain을 구성하여 사용자 지정 또는 비공개 레지스트리에서 패키지를 스캔하세요.

지원되는 에코시스템:

  • Node.js
  • Python

구성 옵션

환경 변수 또는 구성 파일을 통해 사용자 지정 레지스트리를 설정할 수 있습니다. 두 소스는 함께 병합됩니다.

  1. 환경 변수 (쉼표로 구분): ```shell export SAFE_CHAIN_NPM_CUSTOM_REGISTRIES="npm.company.com,registry.internal.net" export SAFE_CHAIN_PIP_CUSTOM_REGISTRIES="pip.company.com,registry.internal.net"
  2. 설정 파일 (~/.safe-chain/config.json): ```json { "npm": { "customRegistries": ["npm.company.com", "registry.internal.net"] }, "pip": { "customRegistries": ["pip.company.com", "registry.internal.net"] } }

PYPI 구성 파일

pip 설정을 위해 pip.conf 파일을 사용하는 경우, Safe Chain이 이를 병합할 수 있도록 PIP_CONFIG_FILE 환경 변수를 통해 pip가 해당 파일을 명시적으로 가리키게 해야 합니다.

Safe Chain은 MITM 프록시 뒤에서 pip를 실행하며, 자체 인증서와 프록시 설정을 주입하기 위해 임시 pip 구성 파일을 작성합니다. PIP_CONFIG_FILE이 설정된 경우, Safe Chain은 설정을 사용자 파일의 사본에 병합합니다(원본 파일은 절대 수정되지 않음). 따라서 index-url, 자격 증명 및 기타 옵션이 보존됩니다. PIP_CONFIG_FILE이 설정되지 않은 경우, pip의 사용자 수준 구성(예: ~/.config/pip/pip.conf)이 Safe Chain의 임시 파일로 덮어써질 수 있으며 사용자 설정이 적용되지 않을 수 있습니다.

악성코드 목록 기본 URL

Safe Chain이 사용자 지정 미러 URL에서 악성코드 데이터베이스와 신규 패키지 목록을 가져오도록 구성할 수 있습니다. 이를 통해 Aikido 악성코드 데이터베이스의 자체 사본을 호스팅할 수 있습니다.

구성 옵션

악성코드 목록 기본 URL은 여러 소스를 통해 설정할 수 있습니다(우선순위 순):

  1. CLI 인자(최우선 순위): ```shell npm install express --safe-chain-malware-list-base-url=https://your-mirror.com
  2. 환경 변수: ```shell export SAFE_CHAIN_MALWARE_LIST_BASE_URL=https://your-mirror.com npm install express
  3. 설정 파일 (~/.safe-chain/config.json): ```json { "malwareListBaseUrl": "https://your-mirror.com" }

기본 URL은 https://malware-list.aikido.dev/의 구조를 미러링하는 서버를 가리켜야 하며, 다음 경로를 포함해야 합니다:

  • /malware_predictions.json (JavaScript 생태계 악성코드 데이터베이스)
  • /malware_pypi.json (Python 생태계 악성코드 데이터베이스)
  • /releases/npm.json (JavaScript 신규 패키지 목록)
  • /releases/pypi.json (Python 신규 패키지 목록)

프로젝트 설정 파일

홈 디렉터리 설정 파일(~/.safe-chain/config.json) 외에도 Safe Chain은 프로젝트 설정 파일을 지원하므로, 설정을 머신별로 구성하는 대신 저장소에 커밋하여 팀 전체가 공유할 수 있습니다.

저장소 루트에 있는 .aikido 파일에 safe-chain: 섹션을 추가하세요(다른 Aikido 도구에서 사용하는 동일한 파일입니다. Safe Chain은 자신의 safe-chain: 섹션만 읽고 나머지는 무시합니다). 이 파일이 발견되면 해당 설정이 홈 디렉터리 설정 파일 위에 병합됩니다. 프로젝트 설정에 지정된 값이 우선하며, 배열(예: customRegistries)은 한쪽이 다른 쪽을 대체하는 대신 두 파일의 값이 결합됩니다.

프로젝트 설정 파일에서 설정할 수 있는 항목은 다음과 같습니다:```yaml safe-chain: minimumPackageAgeHours: 48 npm: customRegistries: - npm.company.com minimumPackageAgeExclusions: - "@aikidosec/*" pip: customRegistries: - pip.company.com minimumPackageAgeExclusions: - requests

`scanTimeout`, `malwareListBaseUrl`, `logFile*` 같은 설정은 프로젝트 구성 파일에서 설정할 수 없습니다. 이러한 설정은 홈 디렉터리 구성, CLI 인수 또는 환경 변수에서만 가져올 수 있습니다.

## 사용자 지정 설치 디렉터리

기본적으로 Safe Chain은 `~/.safe-chain`에 설치됩니다. 설치 프로그램에 명시적인 설치 디렉터리를 전달하여 이를 변경할 수 있습니다. 이는 시스템 전체 설치(예: Docker 이미지 내부)나 다른 도구와의 충돌을 피해야 할 때 유용합니다.

설정된 경우, 모든 Safe Chain 데이터(바이너리, shim, 스크립트, 구성)는 `~/.safe-chain` 대신 사용자 지정 디렉터리 아래에 배치됩니다.

### Unix/Linux/macOS```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
  && echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c - \
  && sh /tmp/install-safe-chain.sh --install-dir /usr/local/.safe-chain \
  && rm /tmp/install-safe-chain.sh

윈도우```powershell

$installer = Join-Path $env:TEMP "install-safe-chain.ps1" Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing $expectedHash = "5FC22EEF74814BEF6828AA07C0EAEC79598F343F98B94A4ACAB823769AD56DA1" if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) { Remove-Item $installer -ErrorAction SilentlyContinue throw "Checksum verification failed for install-safe-chain.ps1" } & $installer -InstallDir 'C:\ProgramData\safe-chain' Remove-Item $installer

# CI/CD에서의 사용법

Aikido Safe Chain을 빌드 프로세스에 통합하여 CI/CD 파이프라인을 악성 패키지로부터 보호할 수 있습니다. 이를 통해 자동화된 빌드 중에 설치되는 모든 패키지가 설치 전에 멀웨어 검사를 거치도록 보장합니다.

## CI/CD용 설치

`--ci` 플래그를 사용하여 CI/CD 환경에 맞게 Aikido Safe Chain을 자동으로 구성하세요. 이렇게 하면 셸 별칭 대신 PATH에 실행 가능한 shim이 설정됩니다.

### Unix/Linux/macOS (GitHub Actions, Azure Pipelines 등)```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
  && echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c - \
  && sh /tmp/install-safe-chain.sh --ci \
  && rm /tmp/install-safe-chain.sh

Windows (Azure Pipelines 등)```powershell

$installer = Join-Path $env:TEMP "install-safe-chain.ps1" Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing $expectedHash = "5FC22EEF74814BEF6828AA07C0EAEC79598F343F98B94A4ACAB823769AD56DA1" if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) { Remove-Item $installer -ErrorAction SilentlyContinue throw "Checksum verification failed for install-safe-chain.ps1" } & $installer -ci Remove-Item $installer

## 지원 플랫폼

- ✅ **GitHub Actions**
- ✅ **Azure Pipelines**
- ✅ **CircleCI**
- ✅ **Jenkins**
- ✅ **Bitbucket Pipelines**
- ✅ **GitLab Pipelines**

## GitHub Actions 예제```yaml
- name: Setup Node.js
  uses: actions/setup-node@v4
  with:
    node-version: "22"
    cache: "npm"

- name: Install safe-chain
  run: |
    curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
    echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c -
    sh /tmp/install-safe-chain.sh --ci
    rm /tmp/install-safe-chain.sh

- name: Install dependencies
  run: npm ci

Azure DevOps 예제```yaml

  • task: NodeTool@0 inputs: versionSpec: "22.x" displayName: "Install Node.js"

  • script: | curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c - sh /tmp/install-safe-chain.sh --ci rm /tmp/install-safe-chain.sh displayName: "Install safe-chain"

  • script: npm ci displayName: "Install dependencies"

## CircleCI 예제```yaml
version: 2.1
jobs:
  build:
    docker:
      - image: cimg/node:lts
    steps:
      - checkout
      - run: |
          curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
          echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c -
          sh /tmp/install-safe-chain.sh --ci
          rm /tmp/install-safe-chain.sh
      - run: npm ci
workflows:
  build_and_test:
    jobs:
      - build

Jenkins 예제

참고: 이 문서는 Jenkins 에이전트에 Node.js와 npm이 설치되어 있다고 가정합니다.```groovy pipeline { agent any

environment { // Jenkins does not automatically persist PATH updates from setup-ci, // so add the shims + binary directory explicitly for all stages. // If you installed into a custom directory, replace ~/.safe-chain with that path here. PATH = "${env.HOME}/.safe-chain/shims:${env.HOME}/.safe-chain/bin:${env.PATH}" }

stages { stage('Install safe-chain') { steps { sh ''' set -euo pipefail

      # Install Safe Chain for CI
      curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
      echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c -
      sh /tmp/install-safe-chain.sh --ci
      rm /tmp/install-safe-chain.sh
    '''
  }
}

stage('Install project dependencies etc...') {
  steps {
    sh '''
      set -euo pipefail
      npm ci
    '''
  }
}

} }

## Bitbucket Pipelines 예제```yaml
image: node:22

steps:
  - step:
      name: Install
      script:
        - |
          curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
          echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c -
          sh /tmp/install-safe-chain.sh --ci
          rm /tmp/install-safe-chain.sh
        - export PATH=~/.safe-chain/shims:~/.safe-chain/bin:$PATH
        - npm ci

설정 후, CI 파이프라인의 모든 후속 패키지 관리자 명령은 Aikido Safe Chain의 악성코드 탐지 기능에 의해 자동으로 보호됩니다.

GitLab 파이프라인 예시

GitLab 파이프라인에 safe-chain을 추가하려면 파이프라인을 실행하는 이미지에 설치해야 합니다. 이는 다음을 통해 수행할 수 있습니다:

  1. 빌드를 실행할 dockerfile 정의 ```dockerfile FROM node:lts

    Install safe-chain

    RUN curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
    && echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c -
    && sh /tmp/install-safe-chain.sh --ci
    && rm /tmp/install-safe-chain.sh

    Add safe-chain to PATH (update paths if you used a custom install dir)

    ENV PATH="/root/.safe-chain/shims:/root/.safe-chain/bin:${PATH}"

  2. CI 파이프라인에서 Docker 이미지를 빌드하세요. ```yaml build-image: stage: build-image image: docker:latest services: - docker:dind script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build -t $CI_REGISTRY_IMAGE:latest . - docker push $CI_REGISTRY_IMAGE:latest

  3. 파이프라인에서 이미지를 사용하세요: ```yaml npm-ci: stage: install image: $CI_REGISTRY_IMAGE:latest script: - npm ci

이 예제의 전체 파이프라인은 다음과 같습니다:```yaml stages:

  • build-image
  • install

build-image: stage: build-image image: docker:latest services: - docker:dind script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build -t $CI_REGISTRY_IMAGE:latest . - docker push $CI_REGISTRY_IMAGE:latest

npm-ci: stage: install image: $CI_REGISTRY_IMAGE:latest script: - npm ci

# 문제 해결

문제가 있으신가요? 일반적인 문제에 대한 도움말은 [문제 해결 가이드](https://github.com/aikidosec/safe-chain/blob/HEAD/docs/troubleshooting.md)를 참조하세요.

# 문제 보고

문제가 발생한 경우:

1. [GitHub Issues](https://github.com/AikidoSec/safe-chain/issues)를 방문하세요
2. 다음 정보를 포함하세요:
   * 운영 체제 및 버전
   * 셸 종류 및 버전
   * `safe-chain --version` 출력
   * 검증 명령의 출력
   * 실패한 명령의 상세 로그 (`--safe-chain-logging=verbose` 인자 추가)

카테고리