JavaRush /Java Blog /Random-KO /커피 브레이크 #35. GitHub 보안 규칙을 준수하는 방법. Java 코드를 빠르게 디버깅하기 위한...

커피 브레이크 #35. GitHub 보안 규칙을 준수하는 방법. Java 코드를 빠르게 디버깅하기 위한 유용한 팁

Random-KO 그룹에 게시되었습니다

GitHub에서 보안을 유지하는 방법

출처: DZone GitHub는 당연히 가장 인기 있는 팀 개발 플랫폼으로 간주됩니다. 지난해 가을 자료에 따르면 4천만 명 이상의 프로그래머가 이 서비스를 이용했다. 그리고 대부분 오픈소스를 사용해 소프트웨어를 만들기 때문에 Github에서 작업할 때 보안이 최우선이 되어야 합니다. 코드를 재사용하면 취약점이 확산될 위험이 높아집니다. 이는 모든 GitHub 사용자가 안전한 개발 환경을 만드는 데 최대한의 주의를 기울여야 함을 의미합니다. 커피 브레이크 #35.  GitHub 보안 규칙을 준수하는 방법.  Java 코드를 빠르게 디버깅하기 위한 유용한 팁 - 1GitHub 코드를 안전하게 유지하기 위해 따라야 할 8가지 규칙이 있습니다.

액세스 제어 제공

액세스 제어는 GitHub뿐만 아니라 코드 보호가 필요한 다른 환경에서도 보안을 향상시키는 가장 좋은 방법 중 하나입니다. GitHub는 작업의 위험을 줄이는 여러 가지 방법을 제공합니다. 먼저, 최소한의 권한을 부여하는 습관을 들이십시오. 즉, 저장소 사용자에게 작업을 수행하는 데 필요한 권한만 부여하십시오. 따라야 할 다른 액세스 제어 방법이 있습니다.
  • 사용자가 공개 저장소에서 조직에 대한 정보를 공개하지 못하도록 저장소 생성을 제한합니다.
  • 사용자가 커밋을 병합하거나 안전하게 분기를 관리할 수 있도록 분기 보호 및 상태 확인을 활성화합니다.
  • 사용자가 귀하의 코드를 다른 사람에게 공개하거나 공유하지 않도록 개인 저장소 포크를 허용하거나 비활성화합니다.
  • 더 이상 커뮤니티 회원이 아니거나 회사 직원이 아닌 모든 비활성 사용자에 대한 액세스 권한을 취소합니다.
  • GitHub에서 프로젝트에 대한 액세스 권한을 주기적으로 확인하세요.
  • 사용자가 GitHub 계정 액세스 또는 비밀번호를 다른 사람과 공유하지 않도록 하십시오.
  • 각 저장소 사용자가 자신의 계정에서 2단계 인증을 사용하는지 확인하십시오.
  • 개인 액세스 토큰과 SSH 키를 주기적으로 변경하세요.

GitHub 파일에 액세스 데이터를 저장하지 마세요.

코드, 구성 파일 또는 커밋 메시지를 통해 GitHub 저장소에 대한 액세스 정보를 유출하는 것은 공격에 사용될 수 있습니다. 민감한 데이터가 저장소에 추가되는 것을 방지하려면 git-secrets 또는 Vault 와 같은 액세스 제어 도구를 사용하세요 . 이러한 도구는 코드 베이스를 검사하고 코드 또는 구성 파일에서 중요한 정보가 발견될 때마다 액세스를 변경합니다. GitHub 저장소에서 중요한 정보를 발견하면 즉시 삭제해야 합니다. 그러나 GitHub는 저장소의 모든 커밋 기록을 유지하므로 데이터 삭제만으로는 충분하지 않습니다. GitHub 저장소 기록에서 파일을 삭제 해야 합니다 . 보안을 강화하기 위한 중요한 단계는 이전에 공개적으로 사용 가능했던 모든 비밀번호와 토큰을 교체하는 것입니다.

취약한 종속성에 대한 경고 활성화

GitHub 사용자가 더 많은 프로젝트를 수행함에 따라 증가하는 종속 개체 수를 제어하는 ​​것이 점점 더 어려워지고 있습니다. 다행히 GitHub는 저장소에서 발견된 취약한 종속성에 대한 자동 경고를 제공합니다. 이러한 경고는 NVD( National Vulnerability Database ), GitHub 보안 권고 및 200개 이상의 프로그래밍 언어를 지원하는 WhiteSource 취약성 데이터베이스를 기반으로 합니다 . GitHub 알림을 사용하면 오픈 소스 라이브러리를 더 쉽고 안전하게 사용할 수 있습니다.

GitHub에서 추가된 앱 확인

GitHub Marketplace에는 타사 개발자 및 회사가 작성한 수백 개의 애플리케이션이 포함되어 있습니다. 따라서 저장소에 추가하는 각 애플리케이션을 주의 깊게 검토하는 것이 중요합니다. GitHub Marketplace에서 애플리케이션을 설치할 때 다음 지침을 따르세요.
  • 최소 권한의 원칙을 시행합니다. 애플리케이션에 필요한 것보다 더 많은 액세스 권한을 부여하지 마십시오.
  • 항상 애플리케이션에서 요청한 액세스 권한이나 권한에 대해 질문하세요. 이 수준의 액세스로 인해 발생할 수 있는 피해에 대해 생각해 보십시오.
  • 회사 또는 앱 개발자에게 GitHub 저장소에 대한 액세스 권한을 부여하기 전에 실제로 존재하는지 확인하세요.
  • 애플리케이션의 기능과 보안을 확인하세요. 취약점이 포함되어 있으면 해킹의 피해자가 될 수 있습니다.
애플리케이션의 보안은 가장 약한 부분으로 판단됩니다. 이는 GitHub 리포지토리에도 적용됩니다. 따라서 앱에 저장소 액세스 권한을 부여하기 전에 앱을 신뢰하고 요청하는 액세스 수준과 일치하는지 확인하세요.

GitHub에서 가져온 모든 코드를 확인하세요.

개발자는 종종 다른 사람의 코드를 사용합니다. 다른 사람의 코드 일부를 프로젝트에 복사할 때마다 전체 검토를 수행하세요. 이는 특히 소규모 프로젝트의 경우 시간 낭비처럼 보일 수 있지만 이 규칙을 무시하면 저장소에 취약점이 발생할 가능성이 있습니다. 가져온 코드와 관련된 또 다른 위험은 액세스 데이터와 같은 민감한 정보가 포함될 수 있다는 것입니다. GitHub 파일에 저장되면 또 다른 보안 위험이 발생합니다. 코드를 복사하기 전에 감사하면 이러한 허점을 식별하는 데 도움이 됩니다. 다른 사람의 코드가 개인 저장소에 있다고 해서 안전하다고 가정하지 마세요. 이는 코드베이스에 매우 해를 끼칠 수 있습니다.

리포지토리에 대한 자동 정적 소스 코드 분석 사용

저장소의 취약점을 분석하는 데 사용할 수 있는 여러 타사 도구가 있습니다. 그 중 하나는 GitHub Marketplace의 무료 도구인 WhiteSource Bolt 입니다. WhiteSource Bolt는 노출된 모든 코드의 취약점을 찾기 위해 저장소를 검사합니다. 또한 취약점에 대한 자세한 정보를 제공하고 해결 옵션을 제안합니다.

귀하의 필요에 맞는 GitHub 계획을 사용하십시오

많은 회사에는 개발자가 GitHub와 같은 플랫폼에 코드를 게시하지 못하도록 하는 정책이 있습니다. 이러한 제한은 정부 부서와 금융 기관에서 특히 일반적입니다. 규제가 엄격한 환경에서 작업하는 경우 로컬 서버에서 리포지토리를 호스팅할 수 있는 엔터프라이즈 플랜인 GitHub Enterprise를 사용하세요. 이를 통해 회사 개발자는 승인되지 않은 GitHub 사용자에 대한 걱정 없이 모든 프로젝트에 액세스할 수 있으므로 더 높은 수준의 보안을 제공합니다.

프로젝트에서 포괄적인 보안 정책을 따르세요.

안전은 공동의 책임입니다. 팀으로 작업하는 경우 모든 이해관계자가 따라야 하는 안전 규칙을 수립하는 것이 중요합니다. 이상적으로는 계획 단계에서 사이버 보안 팀과 개발 팀을 한데 모아 서로 동기화되어 작동하는지 확인해야 합니다. 이렇게 하면 개발 프로세스 중에 보호를 더 쉽게 보장할 수 있습니다. 팀 구성원 중 한 명이 비밀번호나 기타 민감한 정보를 부주의하게 저장하면 저장소 전체가 위험해질 수 있습니다. 이를 방지하려면 모든 동료가 따라야 하는 안전 절차를 명확하게 문서화하세요.

결론

GitHub에서 코드를 보호하는 것은 쉽습니다. GitHub에 내장된 보안 기능을 활용하여 적절한 액세스 제어를 보장하기만 하면 됩니다. 보호를 극대화하려면 개발의 모든 단계에서 코드 보안을 강화하는 추가 도구를 통합하세요. 또한 문서의 비즈니스무료 사용자를 위한 GitHub 보안 섹션을 검토하는 것이 좋습니다 . 이렇게 하면 코드 보안 및 보호에 대한 추가 정보를 얻을 수 있습니다.

Java 코드를 빠르게 디버깅하기 위한 유용한 팁

출처: Hackernoon 효율적인 코드 작성 외에도 디버깅 능력을 향상하는 것은 Java 개발자로서 삶을 더 쉽게 만들기 위해 할 수 있는 가장 유용한 일 중 하나입니다. 이는 소프트웨어 세계가 분산 아키텍처와 비동기 코드로 활발히 이동하고 있는 현대 소프트웨어 개발 환경에서 특히 중요합니다. 커피 브레이크 #35.  GitHub 보안 규칙을 준수하는 방법.  Java 코드를 빠르게 디버깅하기 위한 유용한 팁 - 2소프트웨어 오류는 불가피하지만 복잡한 빌드에서는 오류를 감지하고 수정하기가 점점 더 어려워지고 있습니다. 그리고 제품 출시 단계로 넘어가면 디버깅 과정이 더욱 심각한 문제가 됩니다. 불행하게도 이를 피할 수 있는 방법은 없습니다. 디버깅이 필요합니다. 여러분을 돕기 위해 다양한 개발 단계에서 Java 애플리케이션을 디버깅하는 데 유용한 몇 가지 팁을 공유하기로 결정했습니다.

제어점 사용

모든 디버깅 프로세스의 기초가 되는 명백하지만 매우 중요한 지점인 중단점부터 시작해 보겠습니다. 체크포인트를 사용하면 애플리케이션 실행을 중지하여 프로그램 상태를 분석하고 코드가 올바르게 작동하지 않는 이유를 파악할 수 있습니다. 각 디버거는 조건부 중단점, 예외 중단점, 감시점 및 추적점을 포함한 여러 중단점 옵션을 제공합니다. 다양한 유형의 중단점을 사용하는 방법과 시기를 배우면 디버깅 프로세스가 더 원활해집니다. 일부 최신 도구는 애플리케이션을 중단하지 않고 체크포인트를 지원한다는 점을 언급할 가치가 있습니다. 이를 통해 프로그램 실행을 중단하지 않고도 코드에 지점을 설정하고 디버깅 데이터를 수집할 수 있습니다.

논리적 구조 표시

논리 구조 표시 기능은 Java 클래스의 내용을 모니터링할 때 매우 유용합니다. 이 기능이 활성화되면 변수 목록에 배열이 표시되며 이는 디버깅 컨텍스트에서 훨씬 더 유용합니다. 이는 특히 코드에 객체에 대한 toString() 메서드가 없는 경우 매우 편리합니다. 변수 보기를 사용하면 디버깅하는 동안 변수 값을 직접 변경할 수도 있습니다. 이렇게 하면 변경된 입력 데이터로 디버깅 세션을 다시 시작할 필요가 없으므로 상당한 시간을 절약할 수 있습니다.

코드베이스 탐색 방법 배우기

모든 Java 디버거는 디버깅하는 동안 코드의 다양한 섹션을 탐색할 수 있는 여러 함수를 사용할 수 있습니다. 그 중에는 "run to line", "step over", "step into" 및 "step into"가 포함됩니다. 이 외에도 두 가지 옵션을 더 고려하십시오.
  1. 프레임에 놓기 - 이 함수는 스택 프레임의 한 지점으로 돌아가는 데 사용됩니다. 특정 지점을 놓치고 다시 돌아가야 하는 경우 프레임에 놓기 기능을 사용하세요.
  2. 단계 필터링 - 디버깅 중에 특정 패킷을 건너뛸 수 있습니다. 필요하지 않은 유형을 간단히 필터링할 수 있으면 JDK 시스템의 모든 클래스를 탐색할 필요가 없습니다.
코드 탐색 속도를 향상하려면 기능 키 조합을 숙지해야 합니다.
  • F5 - "들어가기"를 위한 것입니다.
  • F6 - "넘어가기"를 위한 것입니다.
  • F7 - "단계 복귀"용.
  • F8 - 다음 체크포인트로 이동합니다.
단축키는 IDE마다 다를 수 있지만 이를 기억해 두면 마우스를 더 자주 사용하지 않아도 됩니다.

교착상태를 피하는 방법 배우기

순환 종속성을 형성한 후 두 개 이상의 스레드가 차단되면 교착 상태 시나리오가 발생합니다. Java 스레드 세트는 일반적으로 다른 리소스를 기다리고 있으므로 이로 인해 애플리케이션이 완전히 중지될 수 있습니다. jstack 교착 상태 디버깅은 메모리 스파이크, CPU 로드 등과 같은 문제 지표를 표시하지 않기 때문에 상당히 어려울 수 있습니다. jstack 교착 상태 상황을 해결하는 데는 다양한 접근 방식이 있습니다. 첫째, JVM 클러스터에서 여러 스레드 덤프를 캡처하여 스레드 패턴을 유추할 수 있습니다. 이 경우 정적 스레드 덤프를 분석하는 것만으로는 충분하지 않을 수 있습니다. JVM 클러스터의 크기에 따라 여러 파일을 트롤링해야 할 수도 있는데, 이는 노동 집약적이고 시간이 많이 걸리는 프로세스인 경우가 많습니다. 스레드 교착 상태를 격리하는 데 필요한 JV 계층과 코드 계층을 제공하는 애플리케이션 모니터링 솔루션을 사용하는 것이 가장 좋습니다. 다행히도 일부 최신 디버거와 상용 APM 도구를 포함하여 이러한 상황에 도움이 될 수 있는 혁신적인 도구가 있습니다. 이러한 도구는 오류를 식별하는 동시에 Java 코드의 투명성을 높입니다.

프로덕션 디버거의 강력한 활용

대부분의 개발자가 일반적으로 따르는 일반적인 디버깅 프로세스에는 환경 복제, 오류 격리 및 수정이 포함됩니다. 그러나 이것이 모든 경우에 적용되는 것은 아닙니다. 이런 상황이라면 개발자는 강력한 프로덕션 디버거를 사용해야 합니다. Rookout은 그러한 도구 중 하나입니다. 상태나 흐름 제어를 변경하지 않고도 애플리케이션에서 디버깅 데이터를 수집할 수 있습니다. Rookout을 사용하면 중단되지 않는 중단점을 설정하여 전체 스택 추적을 얻고, 라이브 변수 또는 디버깅에 필요한 기타 애플리케이션 데이터를 캡처할 수 있습니다. 따라서 프로덕션 디버깅을 위해 오버헤드가 높은 모니터링 솔루션을 사용하는 대신 새로운 코드를 재배포하거나 작성하지 않고도 애플리케이션을 디버깅하는 데 필요한 모든 것을 제공하는 Rookout을 사용하면 됩니다. 서버측 애플리케이션에서 작업하든 컨테이너화된 애플리케이션에서 작업하든 Rookout은 디버깅 무기고에 훌륭한 추가 기능을 제공합니다.

원격 디버깅을 잊지 마세요

NetBeans, Eclipse, IntelliJ IDEA, Visual Studio 등 대부분의 IDE는 다른 컴퓨터에 있는 Java 코드를 수정할 수 있는 기술인 원격 디버깅을 지원합니다. 이는 시스템이 로컬 디버깅을 지원하지 않거나 컴퓨터에 디버거를 실행할 리소스가 충분하지 않은 경우에 특히 중요합니다. 원격 디버깅을 수행하려면 디버거가 원격 포트에 연결하는 데 사용할 구성 정보를 제공해야 합니다. 원격 디버깅은 오프사이트 개발자가 버그 수정을 위해 애플리케이션에 연결해야 하는 문제 해결 상황에도 유용합니다. 때로는 디버깅이 실제 구현보다 오래 걸릴 수 있다는 점을 기억하십시오. Java 디버깅 기술을 연마하면서 항상 깨끗하고 효율적인 코드를 작성하려고 노력하십시오. 버그를 수정하면 좋은 결과를 얻을 수 있습니다. 상황이 걷잡을 수 없을 것 같다면, 항상 휴식을 취하는 것이 좋습니다. 버그는 프로그래밍 퍼즐이며, 많은 프로그래머는 컴퓨터 근처에 있지 않고도 이 문제를 해결할 수 있습니다. 위에서 설명한 전략을 사용하여 Java 디버깅 문제를 제거하세요. 즐거운 코딩하세요!
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION