Security

이eun·2024년 12월 31일

Blocking

IP 접근 제어
특정 ip 혹은 특정 국가, 그룹 등 사용할 수 있는지 없는지를 나눈 것을 의미

Encryption

데이터를 암호화하는 것

  1. Data의 암호화 : 대칭키 암호화 (1st gen enc)

    Data <- Key -> enc(Data)
    enc(Data) <- Key -> Data

  • Encryption and Hashing and Encode의 차이를 반드시 알아야 함.
    모두 다름
  1. 통신의 암호화 : 비대칭키 암호화 (2nd gen enc)

    Data <- pubKey(공개키로 암호화함) -> enc(data) -- privKey(비공개키로 복호화함) -> Data
    암호화를 하는 키와 복호화하는 키를 다르게 사용하는 것을 의미함

=> HTTP방식이며 해당 기술로 인터넷의 발전을 이룰 수 있었음

  1. 계산의 암호화 : 동형 암호화 (3th gen enc)

    data 1, data2 -> BOX(data1+data2) => data3

암호화된 데이터끼리 복잡한 알고리즘과 다양한 형태를 통해 새로운 데이터를 암호화함. 특정한 컬럼의 경로만 안다면 서로의 데이터를 암호화해서 새로운 방식의 암호화를 통해 공유를 하는 것을 의미함.
개인정보처리방침을 준수하면서 서로 다른 데이터를 공유하여 insight를 얻고 싶을 때 사용함
ex) Snowflake, aws의 Clean Room

Reliability

  • Fail-over

    서버가 터졌거나 죽었음을 의미함 -> 그래서 이중화가 필요함
    이때 엔지니어는 장애가 터졌을 때, 우리가 그동안 테스트하고 해결해가는 과정통해 극복해야 함

  • Failed-back

    아까 Failover로 박살났던 서버가 정상화돼서 처음 상태로 원복이 되어야되는데 그렇게 안될 경우, 그런 것들을 복구해나가야 함

  • High Availablity (고가용성)

    이중화, 삼중화되었음을 의미함

  • Observability (가시성, 관측성)

    어플리케이션의 시작부터 끝까지 클라이언트 + 서버까지 모두 모니터링해야 함
    ex) Datadog, splunk 등

  • Immutable(불변성)

    A라는 서버를 띄위기 위해서 해야하는 다양한 작업이 있는데 그것을 똑같은 서버로 만들기위해서 자동화되어 있어야 함
    그 서버에 대한 설정, 어플리케이션의 배포, 스타일, 컨피그레이션을 모두 코드화해야 함

  • Declarative(선언형)

    결국 코드화해야 함

  • self-healing(자가복구)

    컨테이너와 매우 유사, 서버는 물리적 장비에 의해 추상화해서 VM형태가 됐고 그 다음에 컨테이너 형태가 됐음
    컨테이너를 배포한다는 건 더이상 컨테이너 안에 들어가서 어플리케이션을 뒤바꿔치기를 한다거나 설정을 바꾸지 않고 그냥 그 컨테이너 자체를 갈아 끼우면 됨 -> 이식성의 장점으로 가능해진 거임

VM의 경우, 인프라스트럭쳐 위에 하이퍼바이저가 있고 OS가 있고 그 위에 어플리케이션을 올렸었음

컨테이너의 경우, 인프라스트럭쳐위에 OS가 올라가게 되고 컨테이너 엔진이 되고 커널 영역 같은 건 공유되기 때문에 성능 저하 현상이 많이 일어나지 않음. 그래서 성능의 99%를 사용할 수 있음.
즉, 개발환경과 프로덕션 환경까지 모든 것을 일치하게 만들기 쉬움

Hiding

어떤 정보를 접근하는 데 있어서 특정 방법에 의해서만 접근하는 것을 의미

Auditing

누가 언제 어떤 사유로 접근을 했는지 기록해두는 것

Authentication & Authorization

인증, 인가
로그인 시, 해당 사용자가 얼마만큼의 권한을 갖고 있는지 RBAC을 주어짐
어떻게 구현해놨는지 방식을 의미
인증의 경우, OAuth2.0, SAML와 같은 예가 대표적임

Architecture

사람이 많아질수록 조직이 커질수록 일의 능률과 효율이 굉장히 떨어짐. 아키텍트는 그거를 해결하는 사람이며 그거를 해결하는 방법과 모습과 일하는 형태가 아키텍쳐임.

0개의 댓글