Authorization
인가
"Are you allowed to do that?"
- 인증된 사용자가 특정 Resource에 대한 접근 및 동작에 대한 권한을 부여하는 작업을 의미한다.
OAuth 2.0 (URL)
- 한 Application에서 다른 Application으로 하여금
데이터와 기능에 대한 권한을 부여하는 절차에 대한 표준이자 프레임워크이다.
(Authorization 절차에 대한 표준 및 프레임워크이다.)
OIDC (OpenID Connect) (URL)
- OAuth 2.0을 기반으로 한 통합 인증 시스템 및 프로토콜이다.
- OIDC는 OAuth 2.0의 위에 추가되는 Layer로,
OAuth 2.0과 함께 사용되어 사용자의 정보를 인증하고 안전히 관리하며 권한을 부여한다.
- OIDC와 OAuth 2.0을 통해 사용자는 Third-Party에서 간편히 인증하고 권한을 부여받을 수 있다.
- OIDC에서는 사용자의 ID를 인증하기 위해 ID Token 개념을 사용한다.
* Access Token: 리소스에 접근하기 위한 토큰
* ID Token: 사용자 정보에 접근하기 위한 토큰
ACM (Access Control Matrix; 접근 제어 행렬)
- Access Subject(접근 주체)와 Access Object(Resource; 접근 객체)에 대한 접근 권한을
행렬을 통해 표현 및 제어하는 방식을 의미한다.
- 주체별·객체별 접근 권한을 표현한다.
* Legend (범례)
Legend | Description |
Subject (Row) |
- 주체 |
Object (Column) |
- 리소스 |
r | - Read |
w | - Write |
x | - Execute |
Example. ACM
- 각 Row에 있는 Bob, Alice, Sam, Accounting program은 Subject이다.
- 각 Column 에 있는 OS, Accounting program, Accounting data, Insurnace data, Payroll data는 Object이다.
- ACM에서 Row를 기준으로 권한을 관리할 것인지, Column을 기준으로 권한을 관리할 것인지에 따라
ACM의 관리 유형은 아래처럼 두 가지로 나뉜다.
ACM Type | Major | Description |
ACLs (Access Control Lists) |
Column Major (Data-Oriented) |
- 각 Object(접근 객체)마다의 Subject(주체)들을 저장한다. - Subject에 비해 Object(Resource)가 많은 환경에서 유리하다. (PC 환경 등) - 구현이 간단하다. - Subject(사용자)가 많고 지속적으로 변화하는 환경에 불리하다. - 한 사용자에 대한 모든 권한을 조회하기 어렵다. - Unix, Linux, macOS, Android, iOS 등에서 채택하고 있는 방식이다. (Windows에서는 보다 복잡한 구조의 ACLs을 채택하고 있다.) |
CLs (Capability Lists) |
Row Major | - 각 Subject(주체)마다의 Object(접근 객체)들을 저장한다. - Runtime Checking에 효과적이다. - 한 사용자의 권한을 다른 사용자에게 Delegating(위임)하는 것이 쉽게 이루어진다. - 한 리소스에 대한 모든 사용자의 권한을 조회하기 어렵다. (즉, 한 리소스에 대한 상태를 변경하기 어렵다.) - Object에 비해 Subject가 많은 환경에서 유리하다. (Web Server 등) |
Unix Security
- Unix에서는 한 File에 대한 접근 권한을 16bits Code로 관리한다.
4bits | 3bits | 3bits | 3bits | 3bits |
- 파일의 종류 d: Directory - : File |
- 특수 권한 정보 r: Read w: Write x: Execution -: Disapprove |
- User 권한 정보 r: Read w: Write x: Execution -: Disapprove |
- Group 권한 정보 r: Read w: Write x: Execution -: Disapprove |
- Other 권한 정보 r: Read w: Write x: Execution -: Disapprove |
\(\texttt{root}\) Concept
- \(\texttt{userid}\)가 0(zero)인 사용자를 \(\texttt{root}\)라 하며,
\(\texttt{root}\)는 모든 권한을 부여받은 사용자이다.
(\(\texttt{root}\) 권한을 탈취당하지 않기 위해 Unix에서는 다양한 보안 메커니즘이 설계되어 있다.)
\(\texttt{suid}\) Concept (Set User ID)
- 어떤 사용자에게 해당 프로그램을 구동하는 시간동안만 권한을 부여하는 개념이다.
Reference: OAuth 2.0, URL, 2022.04.29 검색
Reference: OpenID, URL, 2022.04.29 검색
Reference: 2022학년도 1학기 홍익대학교 네트워크 보안 강의, 이윤규 교수님