'전체 글'에 해당되는 글 384건

  1. 2023.08.25 [Oracle] DB Link
  2. 2023.08.24 SASE(Secure Access Service Edge)
  3. 2023.08.24 SSL Pinning
  4. 2023.08.21 SQL 실행계획
  5. 2023.08.16 SHA-256 해시 알고리즘
  6. 2023.08.16 STS (SpringSource Tool Suite)
  7. 2023.08.16 [Jenkins] 젠킨스를 이용한 CI과정
  8. 2023.08.11 [VS Code] vs code 에서 git 연동
  9. 2023.08.10 [MS-SQL] Begin Tran
  10. 2023.08.04 DMZ

[Oracle] DB Link

|

 what?

- 다른 데이터베이스에 접속 할 수 있는 링크

 

-- 사용법 (FROM 테이블명@DB링크호출명)
SELECT * FROM SD_GI_DTL@ERPDEV

 

아래와 같이 Name = {DB링크 호출명}이 된다.

'DATABASE(SQL)' 카테고리의 다른 글

[Oracle] 월별 집계 쿼리  (1) 2023.10.13
[Oracle] Merge into  (0) 2023.08.29
SQL 실행계획  (0) 2023.08.21
[MS-SQL] Begin Tran  (0) 2023.08.10
[Oracle] Archive (Log) Mode  (0) 2023.08.01
And

SASE(Secure Access Service Edge)

|

SASE(Secure Access Service Edge) 란?
- 별도로 구축했던 네트워크 기능과 보안 기능을 일체화시켜 하나의 클라우드 베이스로 제공하는 새로운 아키텍처(구성)

SASE의 구성요소
- 【네트워크 기능】SD-WAN (Software-Defined WAN) : SD-WAN 이란 소프트웨어로 네트워크를 일원 관리하고 통신 경로를 제어하는 기술.
- 【보안 기능】CASB(Cloud Access Security Broker) : 애플리케이션의 보안을 단일 관리 시스템으로 관리하는 방식
- 【보안 기능】SWG(Secure Web Gateway) : URL 필터링(※), 애플리케이션 필터(※), 안티 바이러스(※), 샌드 박스(※) 등 여러 보안 기능을 클라우드 상에서 제공하는 서비스
- 【보안 기능】ZTNA(Zero Trust Network Access) : 사용자가 원격 액세스할 때 사용하고 있는 네트워크, 디바이스를 모두 클라우드 상에서 검증하고 사전에 정의한 정보를 근거로 하여 액세스를 허용

제로트러스트 란?

- 경계가 없는 보안, 즉 이름 그대로 사내, 사외를 구별하지 않고 모든 액세스나 네트워크를 위협으로 간주해 신뢰하지 않고 공격받는 것을 전제로 한 개념

'IT Infra' 카테고리의 다른 글

NAS(Network Attached Storage)  (0) 2023.10.26
방화벽 vs. IDS vs. IPS  (0) 2023.09.15
SSL Pinning  (0) 2023.08.24
[Jenkins] 젠킨스를 이용한 CI과정  (0) 2023.08.16
DMZ  (0) 2023.08.04
And

SSL Pinning

|

What?

- MITM(Man In The Middle) 공격을 예방하기 위해 사용되는 클라이언트 기법

- 클라이언트와 서버 간 통신 시, 인증서 비교를 하여 인증서가 일치하지 않으면 통신이 되지 않도록  함.

 

SSL Pinning은 클라이언트 측에서 사용하는 기법으로, SSL 핸드셰이킹 이후에도 서버의 증명서를 다시 확인하여 중간자 공격을 피할 수 있다. 개발자는 개발 시 클라이언트 측에 신뢰할 수 있는 증명서들을 저장(embed or pin)하고, 이는 이후 실제 통신 과정에서 서버가 제공하는 증명서와 비교하는 데 사용된다. 만약 이 과정에서 미리 저장된 증명서와 서버가 제시한 증명서가 일치하지 않는다면, 연결은 중단될 것이고, 유저의 정보가 서버로 전송되지 않을 것이다. 이런 강제로 인해 클라이언트는 원래의 서버와 통신할 수 있도록 보장된다.

그러나 SSL Pinning에 대해서 각별히 주의해야 할 경우가 있는데, 클라이언트 측에 미리 저장된 증명서가 만기되거나, 서버 측에서 새로운 증명서를 갖게 되어 클라이언트 측의 저장된 증명서와 다르게 될 경우이다. 이 때, 클라이언트는 더 이상 서버를 믿을 수 없고, 연결을 끊게 되며, 클라이언트 어플리케이션은 그냥 벽돌이 된다(고장난다). 그러므로 이런 상황을 피하기 위해서 릴리즈 이전에 클라이언트 어플리케이션에 미래의 증명서를 저장하는 것(pinning)을 권장한다.

클라이언트 어플리케이션에서 SSL Pinning을 하는 방식엔 주로 두 가지가 있다. 하나는 완전한 증명서를 저장하는 것이고 하나는 해쉬된 공개키(hashed public key)를 저장하는 것이다. 해쉬된 공개키를 저장하는 접근법은 더욱 선호되는데, 하나의 개인키(private key)가 업데이트할 증명서를 사인하는 데 사용될 수 있고, 이에 따라 새로운 증명서를 만들 때 새로운 해쉬된 공개키를 만들 필요가 없고, 앱이 벽돌이 될 위험을 낮출 수 있다.

 

참고자료

https://en.wikipedia.org/wiki/HTTP_Public_Key_Pinning

'IT Infra' 카테고리의 다른 글

방화벽 vs. IDS vs. IPS  (0) 2023.09.15
SASE(Secure Access Service Edge)  (0) 2023.08.24
[Jenkins] 젠킨스를 이용한 CI과정  (0) 2023.08.16
DMZ  (0) 2023.08.04
Failover, Failback  (0) 2023.08.03
And

SQL 실행계획

|

[DBeaver]

- 스크립트 창에서 실행할 쿼리 line에서 마우스 우클릭 후 `실행계획 보기` 를 클릭한다.

 

- PLAN 보는법

 - 위에서 아래로 내려가면서 제일 먼저 읽을 위치 찾기
 - 내려가는 과정에서 같은 들여쓰기가 있으면, 무조건 위에서 아래 순으로 읽기
 - 같은 레벨에 들여쓰기된 하위 스텝이 존재하면, 가장 안쪽으로 들여쓰기 된 스텝을 시작으로 상위 스텝으로 읽기

 

- COST : 쿼리를 수행함에 있어 사용된 자원이나, 작업의 단위 ( 단, 어쩔수 없이 Full Scan을 해야 하는 쿼리는 의미X)

- Cardinality : 행 집합에서 행의 수를 표시 ( 행 집합은 기본 테이블, 뷰, 조인이나, GROUP BY의 결과 / 적게 나타날수록 SQL이 빠름 )

'DATABASE(SQL)' 카테고리의 다른 글

[Oracle] Merge into  (0) 2023.08.29
[Oracle] DB Link  (0) 2023.08.25
[MS-SQL] Begin Tran  (0) 2023.08.10
[Oracle] Archive (Log) Mode  (0) 2023.08.01
[Oracle] NVL과 COALESCE 의 차이  (0) 2023.06.02
And

SHA-256 해시 알고리즘

|

What?

- SHA : Secure Hash Algorithm

- 256 : 메모리를 차지하는 비트 수

- 해당 알고리즘으로 text 뿐만 아니라 디지털 문서에도 적용 가능

- 입력 메세지를 크기가 512bit인 블록 단위로 나누고 압축함수를 실행하여 256bit의 해시값을 도출하는 해시함수 알고리즘

- 해시값을 이용해 평문을 얻을수없다는 장점이 있음.

'etc' 카테고리의 다른 글

문자열 자르기의 차이  (0) 2023.10.18
PoC  (0) 2023.07.31
Copilot  (0) 2023.07.31
Web Achitectures 입문  (0) 2023.06.30
성장하려면  (0) 2023.06.30
And

STS (SpringSource Tool Suite)

|

What?

- Spring 개발업체인 SpringSource가 직접 만들어 제공하는 이클립스의 확장판

- 스프링에 특화된 이클립스

- 개발자용 톰캣 서버를 자동으로 생성해줌

- Git, Maven, Gradle 등과 연동해서 개발이 가능함.

- 4 버전 부터는 스프링 레거시 프로젝트를 지원하지 않는다.

- `튜닝되어 있는 이클립스` 라고 생각하면 됨.

 

스프링부트

- 스프링에서 설정을 더 편하게 해주는 프레임워크

- 실행환경이나 의존성 관리 등의 인프라 관련을 신경쓸 필요없이 바로 코딩하면됨.

- application.yml 으로 간단하게 설정이 가능하다.

- 작은 프로젝트에 적합 (cf. 큰프로젝트의 경우 Spring MVC 형태로 WAS에 배포하는 스타일이 낫다.)

 

 

'DevTools' 카테고리의 다른 글

Visual Studio Code 단축키 정리  (1) 2024.03.14
[DBeaver] 테이블 데이터 복사  (0) 2023.09.13
[VS Code] vs code 에서 git 연동  (0) 2023.08.11
[VS Code] .properties 파일에서 한글 깨지는 경우  (0) 2023.08.01
SourceTree  (0) 2023.07.05
And

[Jenkins] 젠킨스를 이용한 CI과정

|

* Jenkins 아이템 생성 시 2가지 방법이 있음

 - 프리스타일

 - 파이프라인

// 파이프라인 코드 예제

pipeline {
    agent any

    tools {
        maven "Maven 3.6.3"
    }

    environment {
        GIT_COMMIT_REV=''
        GIT_CHANGE_BRANCH_NAME=''
        GIT_COMMIT_SHA=''
    }

    options {
        skipDefaultCheckout()
    }

    stages {

        stage('git checkout & clone') {
            steps {
                script {
                    cleanWs()
                    GIT_CHANGE_BRANCH_NAME = sh(returnStdout: true, script: 'echo ${payload} | python3 -c \"import sys,json;print(json.load(sys.stdin,strict=False)[\'ref\'][11:])\"').trim()
                    GIT_COMMIT_SHA = sh(returnStdout: true, script: 'echo ${payload} | python3 -c \"import sys,json;print(json.load(sys.stdin,strict=False)[\'head_commit\'][\'id\'])\"').trim()
                    echo "arrive ${GIT_CHANGE_BRANCH_NAME}"
                    sh "git clone -b ${GIT_CHANGE_BRANCH_NAME} --single-branch \"https://github.com/{#계정명}/{#레포지토리명}.git\""
                    }
                }
            }

        stage('Build') {
        	// maven compile, test, build
            steps {            	
                sh "mvn -f {#레포지토리명}/pom.xml -DskipTests clean package"
                archiveArtifacts '{#레포지토리명}/target/*.jar'
            }

			// github api를 이용해 github으로 빌드&테스트 성공 실패 여부 전송
            post {
                 success {
                      sh ("curl -X POST -H \"Content-Type: application/json\" \
                      --data '{\"state\": \"success\", \"context\": \"@@pass ci test & build\", \"target_url\": \"http://115.85.180.192:8080/job/{#레포지토리명}\"}' \
                      \"https://${GITHUB_TOKEN}@api.github.com/repos/{#계정명}/{#레포지토리명}/statuses/${GIT_COMMIT_SHA}\"")
                    }

                    failure {
                      sh ("curl -X POST -H \"Content-Type: application/json\" \
                      --data '{\"state\": \"failure\", \"context\": \"@@failure ci test & build\", \"target_url\": \"http://115.85.180.192:8080/job/{#레포지토리명}\"}' \
                      \"https://${GITHUB_TOKEN}@api.github.com/repos/{#계정명}/{#레포지토리명}/statuses/${GIT_COMMIT_SHA}\"")
                    }
            }
        }


        stage('Dockerfile Build & Push To Docker Hub & Delete Docker Image') {
            steps {
                script {
                    sh "docker build -t {#ID}/{#레포지토리명} {#레포지토리명}/."
                    sh "docker push {#ID}/{#레포지토리명}"
                    sh "docker rmi {#ID}/{#레포지토리명}"
                }
            }
        }

		// 배포 서버로 빌드파일 전송
        stage('Deploy') {
            steps {
                script {
                    sh "ssh -p {#포트번호} root@127.0.0.1 -T sh < /var/lib/jenkins/docker-deploy.sh"
                }
            }
        }

    }

}

 

1. Github에 수정된 코드가 push됨

 

2. Github는 1을 감지하고, Jenkins에 Github Webhook을 보냄

 - GitHub(Gitlab) Webhook 설정 필요( 토큰 관련 )

 - Webhook 은 repository 별로 설정해주어야 함.

 

3. Jenkins는 2를 감지하고, Webhook을 JSON 파일로 파싱

 - 

 

4. 파싱하여 변화된 branch를 파악하고 이 branch의 코드를 git clone

 

5. Jenkins 에서는 Maven 빌드, 컴파일, 테스트, 패키징 과정을 거쳐 빌드함.

 

 

'IT Infra' 카테고리의 다른 글

SASE(Secure Access Service Edge)  (0) 2023.08.24
SSL Pinning  (0) 2023.08.24
DMZ  (0) 2023.08.04
Failover, Failback  (0) 2023.08.03
SD-WAN  (0) 2023.08.03
And

[VS Code] vs code 에서 git 연동

|

해당 파일의 git 이력을 보고싶다

→ GitLens 설치

'DevTools' 카테고리의 다른 글

[DBeaver] 테이블 데이터 복사  (0) 2023.09.13
STS (SpringSource Tool Suite)  (0) 2023.08.16
[VS Code] .properties 파일에서 한글 깨지는 경우  (0) 2023.08.01
SourceTree  (0) 2023.07.05
tomcat 관련  (0) 2023.05.08
And

[MS-SQL] Begin Tran

|

 

begin tran

  update mi_wunban      
  set sa_won = 2958694814   // 2958694814 값에 요청 {수정} 값이 들어간다
  where yyyy = left('202307',4) and mm = right('202307',2)  and acc_gb = 'FA' // 202307 값에 요청 yyyymm 값이 들어간다

commit tran // commit tran 이나, rollback tran 을 실행하지 않으면, DB가 transaction을 물고 있어서 오류가 난다.

 

mssql 사용시, dbeaver말고 쿼리 분석까지 해주는 microsoft sql server management studio 이나 datagrip을 사용하자.

'DATABASE(SQL)' 카테고리의 다른 글

[Oracle] DB Link  (0) 2023.08.25
SQL 실행계획  (0) 2023.08.21
[Oracle] Archive (Log) Mode  (0) 2023.08.01
[Oracle] NVL과 COALESCE 의 차이  (0) 2023.06.02
MYSQL DEFINER  (0) 2023.04.27
And

DMZ

|

What?

- 내부 네트워크에 존재하지만 외부에서 접근할 수 있는 특수한 네트워크 영역

- DeMilitarized Zone

- 외부 네트워크(인터넷) ↔ 방화벽A ↔ DMZ ↔ 방화벽B ↔ 내부 네트워크(인트라넷)

 

'IT Infra' 카테고리의 다른 글

SSL Pinning  (0) 2023.08.24
[Jenkins] 젠킨스를 이용한 CI과정  (0) 2023.08.16
Failover, Failback  (0) 2023.08.03
SD-WAN  (0) 2023.08.03
네트워크 스위치 (Network Switch)  (0) 2023.08.03
And
prev | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ··· | 39 | next