paint-brush
Allure Report 보안 문제를 해결하는 방법~에 의해@socialdiscoverygroup
449 판독값
449 판독값

Allure Report 보안 문제를 해결하는 방법

~에 의해 Social Discovery Group6m2024/04/03
Read on Terminal Reader

너무 오래; 읽다

상세하고 시각적으로 매력적인 테스트 보고서는 소프트웨어 테스터가 테스트 결과를 이해하고 정보에 입각한 결정을 내리는 데 중요합니다. Allure는 훌륭한 솔루션이지만 보안이 부족합니다. 이 기사에서는 Social Discovery Group의 테스트 팀이 적절한 Allure Docker를 생성하고 스토리지 체계를 수정하여 Allure 보고서 보안 문제를 해결하는 방법을 공유합니다.
featured image - Allure Report 보안 문제를 해결하는 방법
Social Discovery Group HackerNoon profile picture
0-item
1-item


상세하고 시각적으로 매력적인 테스트 보고서는 소프트웨어 테스터가 테스트 결과를 이해하고 정보에 입각한 결정을 내리는 데 중요합니다. Social Discovery Group의 팀은 세부 사항에 세심한 주의를 기울여 모든 답변을 갖고 있는 것처럼 보이는 강력한 오픈 소스 솔루션인 Allure Reports의 도움으로 시각적으로 매력적인 테스트 보고서를 작성합니다. 그러나 우리는 보안이라는 결함을 발견했습니다. 링크가 있는 사람은 누구나 내부를 엿볼 수 있었고 하위 시스템 전반에 걸친 적응성은 부족했습니다. 이 기사에서는 SDG 테스트 팀이 적절한 Allure Docker를 생성하고 스토리지 체계를 수정하여 Allure 보고서 보안 문제를 해결한 방법을 공유합니다.


SDG 개발 환경은 Microsoft 제품을 기반으로 하며 Azure DevOps는 CI/CD 프로세스 실행에 활용됩니다. CI 파이프라인을 통해 자동화된 테스트 저장소가 구축되고, 테스트 실행에 대한 테스터의 선호도에 따라 여러 CD 파이프라인을 통해 분류됩니다.


원래 설정된 계획을 고려해 보겠습니다.



이 설정에서 CD 파이프라인은 두 개의 Allure 보고서에 대한 생성기 역할도 합니다. 하나는 Slack 알림용으로, 테스터에게 단계와 테스트 범주를 지정하는 편리하게 읽을 수 있는 링크를 제공하고, 다른 하나는 Allure 보고서를 Azure DevOps로 내보내기 위한 것입니다.


이는 Azure Storage 계정의 정적 웹 사이트에 대한 보고서 생성 및 이후 $web 컨테이너에 대한 업로드를 가능하게 하는 Azure DevOps의 확장 설치를 통해 달성됩니다. 익명 액세스 구성이 활성화되면 보고서가 링크를 통해 표시될 수 있습니다.



편의성을 높이기 위해 빌드 파이프라인에 Allure 보고서를 표시하는 데 추가 플러그인도 사용되었습니다.




이 체계는 기능적이지만 몇 가지 단점이 있습니다.


첫째, 링크가 있는 모든 사람이 Allure 보고서에 액세스할 수 있으므로 이 방법에는 보안이 부족합니다. 테스트에 따라 보고서에는 서비스, 서비스의 취약점 및 공개 접근이 제한되어야 하는 기타 민감한 데이터에 대한 기밀 정보가 포함될 수 있습니다. 일반 액세스는 누구에게나 주소에 대한 액세스 권한을 제공하는 Azure Storage 계정의 "익명 액세스" 플래그가 활성화되어 있기 때문에 부여됩니다. 이 기능을 비활성화하면 권한이 없는 개인의 파일에 대한 외부 액세스가 중단되지만 Azure DevOps 페이지에서 보고서에 액세스할 수 없게 됩니다.


둘째, 이 방법은 하위 시스템 전체에 보편적으로 적용할 수 없습니다. CD 파이프라인의 작업 목록을 살펴보면 기본 작업 "azcopy"가 보고서를 스토리지 계정에 복사하는 데 사용되는 것을 볼 수 있습니다. 이 작업은 Windows의 에이전트에서만 사용할 수 있으며 Linux를 사용하는 경우 오류를 반환합니다.




셋째, 테스트 이력과 동향을 확인하는 불편함이 있다. 사용 가능한 유일한 보고서 기록은 Slack 알림을 통해 액세스할 수 있으며 이는 특정 테스트를 찾는 편리한 방법이 아닙니다.


위에서 언급한 모든 요인으로 인해 기존 시스템을 수정해야 한다는 결론이 나왔습니다. 따라서 이 문제에 대한 몇 가지 해결책이 고려되었습니다.

  1. 전체 Allure 보고서 프로젝트를 하나의 문서로 결합하는 통합 .html 파일을 생성하는 방법을 만듭니다.

  2. 보고서 보기에 대한 인증을 제공하는 타사 서비스를 활용합니다.

  3. 보고서 조회를 위해 자체 인증을 통해 미리 제작된 이미지를 검색합니다.


이제 이러한 각 사항에 대해 더 자세히 살펴보겠습니다.


앞서 언급했듯이 스토리지 계정에서 "익명 액세스" 기능을 비활성화하면 권한이 없는 사용자가 링크를 통해 파일에 액세스하는 것이 제한됩니다. 외부에서 특정 개인에게 액세스를 제공하기 위해 Azure 자체에서는 SAS 토큰 부여 및 액세스 정책 구성을 포함하는 몇 가지 가능한 옵션을 제공합니다. 그러나 Allure 보고서, 특히 프로젝트 구조의 기존 JavaScript 스크립트를 참조하는 index.html 파일 생성의 특성으로 인해:



보고서를 열면 Blob Storage 자체 내의 파일 간 액세스가 제한되어 있기 때문에 페이지가 비어 있는 것으로 나타납니다.


단일 .html 파일을 만들기 위해 우리는 다음을 발견했습니다. 영상 배포 시 포함된 명령 "allure-combine ./path/to/allure/generated/report/folder"를 사용하여 전체 Allure 프로젝트에서 파일 생성을 용이하게 했습니다. 그러나 이 프로세스를 수행하려면 에이전트에 Python이 설치되어 있어야 합니다. 안타깝게도 이 접근 방식은 테스터의 작업이 제대로 작동하는지 확인하는 데 중요한 구성 요소인 API 테스트 결과에 첨부된 파일이 없기 때문에 효과적이지 않은 것으로 나타났습니다.



Azure는 액세스가 필요한 개인을 필터링할 수 있는 IP 허용 목록을 제공한다는 점도 주목할 가치가 있습니다. 하지만 접속이 필요한 팀은 고정 IP 주소를 가지고 있지 않기 때문에 이 방법은 적합하지 않았습니다.


Allure가 개발 환경에서 테스트를 수집하는 데 널리 사용되는 방식이라는 점을 고려하면 온라인에서 유료 서비스를 이용할 수 있습니다. 예를 들어 https://qameta.io/ 서비스는 사용자 친화적인 웹 인터페이스에서 Allure 보고서의 저장 및 생성을 제공합니다. 그러나 이러한 서비스는 일반적으로 유료이며 필요한 기능은 최소화됩니다. 따라서 우리는 이 구현 옵션을 최후의 수단으로 고려했습니다.


우리가 결정한 선택은 사용자 인터페이스 패널( https://github.com/fescobar/ )의 통합 기능을 갖춘 allure-docker 서비스 Docker 이미지( https://github.com/fescobar/allure-docker-service )였습니다. allure-docker-service-ui ) 인증을 사용합니다. 서비스와의 통신은 HTTP/HTTPS를 통해 구성되며, 이미지 자체는 API 요청을 통해 기능을 지원합니다.


이 솔루션의 몇 가지 장점을 강조해 보겠습니다.

  1. 보안: 데이터 전송은 SSL 및 TLS 메커니즘을 사용하여 암호화되며 이미지는 기본 제공 사용자 "관리자" 및 "뷰어"에게 필요에 따라 수정 및 제공될 수 있는 로그인 자격 증명을 제공합니다.

  2. 편의성: 이 서비스에는 Allure 보고서 작업을 위한 다양한 기능을 제공하는 자체 시각적 인터페이스가 함께 제공됩니다.

  3. 기능: API 요청 덕분에 Azure DevOps 측의 릴리스 파이프라인과 흥미로운 조합을 고안할 수 있습니다. 예를 들어 보고서를 생성하고 업로드한 다음 단일 단계 내에서 캐시를 삭제합니다.


결론적으로 우리의 릴리스 파이프라인은 다음과 같습니다.



Allure 보고서를 업로드할 수 있는 Azure DevOps 확장에서 벗어나지 않았다는 점은 주목할 가치가 있습니다. 그 당시 우리는 이미 자체 에이전트로 전환하고 모든 것이 "스스로" 작동하도록 한다는 아이디어를 고수했기 때문입니다. " 기계.


스토리지와 관련하여 Azure 스토리지 계정에 쓰기, 특히 azcopy 유틸리티를 사용하여 파일 공유, Blob 및 Blob에 업로드하는 방법을 실험했습니다.


결과는 크게 달라졌습니다. File Share az Storage file upload-batch 명령을 사용할 때 테스트의 쓰기 속도는 1시간이 넘었습니다.



az Storage blob upload-batch 명령과 함께 Blob Storage를 사용하면 성능이 6배 향상되어 약 11분이 소요됩니다.



가장 빠른 결과는 azcopy 도구를 사용한 것입니다.


릴리스 파이프라인에서 기본 제공되는 azcopy 통합을 사용하는 동안 Linux 시스템과 호환되지 않습니다. 그러나 Azure CLI 작업을 사용하고 에이전트에 이 유틸리티를 설치하면 다음 명령을 자신있게 사용할 수 있습니다.

azcopy copy '소스' '대상' --recursive=true


인터넷 깊숙한 곳에서 Allure Docker 이미지를 발견한 덕분에 우리는 보고서의 저장 및 표시 방식을 수정할 수 있었습니다. 이제 데이터 액세스는 비밀번호로 보호되며 보고서 생성 및 처리 속도는 여전히 빠릅니다. 게다가 사용자(테스터) 입장에서는 변화가 미미하다. 솔루션은 클러스터 내 별도의 에이전트 덕분에 다른 프로그램과 독립적으로 작동하며, 다른 개발 프로세스에 영향을 미칠 수 없습니다. 이 솔루션의 비용 효율성은 별도의 자체 호스팅 에이전트(15달러, 격리된 경우)와 비슷하며 기존 대안보다 훨씬 저렴합니다. 예를 들어, 이전에 단일 사용자의 가격이 월 $30인 qameta.io를 고려했습니다.


Social Discovery Group의 중간 DevOps 엔지니어인 Dmitrijs Gusarovs가 작성했습니다.


SDG(Social Discovery Group)는 데이트, 소셜, 엔터테인먼트의 교차점에서 소셜 검색 앱을 구축하는 글로벌 기술 회사입니다. 회사의 포트폴리오에는 AI, 게임 메커니즘 및 비디오 스트리밍에 중점을 둔 70개 플랫폼이 포함되어 있습니다. SDG 제품은 150개국 5억 명 이상의 사람들이 사용하고 있습니다.