Chuyển đến nội dung chính

HTTPS cho Jenkins và Sonarqube.


Taking responsibility for cyber security in a truly virtual world
Trong quá trình làm project, devops chúng ta thường build bộ CI/CD nhưng để bảo mật tầng web cho 2 ứng dụng này là Jenkins và Sonarqube thì bạn cần phải làm gì ?

Jenkins server được cài đặt trên ec2 instance của Amazon và Sonarqube được cài đặt chung với server Jenkins nhưng chạy port khác.

Jenkins là gì? Build và deploy code nhanh chóng với Jenkins | TopDev
Logo Jenkins

Giới thiệu SonarQube - Công cụ phân tích và kiểm tra chất lượng code
Kết quả scan của sonarqube:

Trong trường hợp này bạn phân quyền developer nào được quyền truy cập vào web jenkins để deploy và developer nào được vào Sonarqube để xem các kết quả sonar-scanner trả về.

Mong muốn các dữ liệu truyền được mã hoá, vậy phải bật tính năng https cho truy cập jenkins và sonarqube.

Ví dụ ta đang dùng Nginx làm Reverse Proxy

All About Nginx. What is Nginx? | by Aishwary Aish | Medium

Sau khi cài đặt nginx thành công ta viết 1 file configuration :

upstream jenkins {
  server 127.0.0.1:8443 fail_timeout=0;
}
server {
        listen 443 ssl;
         listen [::]:443 ssl;
        ssl_certificate /etc/nginx/nginx-selfsigned.crt;
        ssl_certificate_key /etc/nginx/nginx-selfsigned.key;
        root /var/www/example.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name ec2-x-x-x-x.compute-1.amazonaws.com;

        location / {
                proxy_set_header        Host $host:$server_port;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header        X-Forwarded-Proto $scheme;
                proxy_pass  http://jenkins;
                proxy_http_version 1.1;
                proxy_request_buffering off;
                proxy_buffering off; # Required for HTTP-based CLI to work over SSL
                proxy_redirect  http:// https://;
               add_header 'X-SSH-Endpoint' 'ec2-x-x-x-x.compute-1.amazonaws.com:50022' always;
        }
}


Trong đó port : 8443 là port của Jenkins service chạy trong server, port publish ra ngoài là 443 với SSL certificate là selfsigned. 

Tương tự ta viết 1 file cấu hình cho sonarqube với port chạy là port khác port 443, có thể set port : 444


upstream sonarqube {
  server 127.0.0.1:9000 fail_timeout=0;
}
server {
       
        listen 444 ssl;
         listen [::]:444 ssl;
        ssl_certificate /etc/nginx/nginx-selfsigned.crt;
        ssl_certificate_key /etc/nginx/nginx-selfsigned.key;
        root /var/www/example.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name. ec2-x-x-x-x.compute-1.amazonaws.com;

        location / {
                proxy_set_header        Host $host:$server_port;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header        X-Forwarded-Proto $scheme;
                proxy_pass  http://sonarqube;
                proxy_http_version 1.1;
                proxy_request_buffering off;
                proxy_buffering off; # Required for HTTP-based CLI to work over SSL
                proxy_redirect  http:// https://;
               add_header 'X-SSH-Endpoint' 'ec2-x-x-x-x.compute-1.amazonaws.com:50022' always;
        }
}


Trong đó port 9000 là port chạy của sonarqube service.

Nếu trong trường hợp EC2 instance của bạn không có Public DNS name, ta phải bật tính năng này lên trong VPC.

Vào https://console.aws.amazon.com >> VPC >> click phải vào VPC mà EC2 instance đang chạy trong nó. >>> Edit DNS hostnames




Và enable DNS hostname. 

Lúc này Ec2 instance của bạn sẽ tự động được gán 1 Public DNS name. 

Vậy bạn có thể truy cập vào : 

https://ec2-x-x-x-x.compute-1.amazonaws.com

Và: 
https://ec2-x-x-x-x.compute-1.amazonaws.com:444




Nhận xét

Bài đăng phổ biến từ blog này

Cách sử dụng sys.argv trong python.

Cách sử dụng sys.argv trong python.

sys.argv là môt danh sách [list] trong python, nó được sư dụng khi bạn chạy một lệnh command-line nào đó trên hệ thống.
Và argument này được đẩy vào script python để thực thi khi chạy câu lệnh.

Ví dụ: python sys.argv arg1 arg2

Trước tiên bạn phải import mô đun sys trong script.



import sys print"This is the name of the script: ", sys.argv[0]print"Number of arguments: ", len(sys.argv)print"The arguments are: ", str(sys.argv)

Tên của script này : sysargv.py
Số lượng arg là : 1
Arg là : ['sysargv.py']


python test1020.py 111 This is the name of the script:  test1020.py
Number of arguments:  2
The arguments are:  ['test1020.py', '111']

Thiết kế một RESTful API bằng python và flask.

Như các bạn đã biết thì REST viết tắt bởi REpresentational State Transfer. Bạn có thể tham khảo thêm ở đây.

Vậy REST là gì:

Có 6 yếu tố của REST như sau:

1. Client-Server: phía server side phục vụ như một service còn phía client sẽ dùng service này.

2.Stateless:  Mỗi request từ client phải chứa tất cả các thông tin mà phía server yêu cầu phải có. Nói nôm na là mỗi request chứa các thông tin riêng rẽ không liên quan đến những request khác.

3. Cacheable : Phía server side phải cảnh báo chỉ ra cho client side biết là request đó có cache hay không.

4. Hệ thống phân lớp: Giao tiếp giữa server side và client side có thể thông qua lớp trung gian ở giữa để trả lời các request được gọi mà không cân phía client phải làm những động tác khác nữa.

5. Các cổng giao tiếp là giống nhau : Các phương thức giao tiếp giữa client và server là khuôn mẫu giống nhau.

6. Mã code linh động. Phía server có thể thực thi cho môt API gọi duy nhất mà không ảnh hưởng tới các API khác.

RESTful web service là gì :

Kiế…

Cài đặt docker trên windows server 2016.

1. Cài đặt Windows Server 2016 Container Feature:  Mở PowerShell : Cài đặt các container feature dùng powershell: Dùng lệnh: InstallWindowsFeature containers Restart lại windows: 2. Cài đặt windows server 2016 base image:  Cài đặt mô đun : ContainerImage Dùng lệnh: Install-PackageProvider ContainerImage -force List các image có giá trị: Cài đặt Windows Server Core : 3. Cài đặt docker trên windows server 2016. Download script để cài đặt docker : Chạy script : Kiểm tra các image có trên server :