728x90
반응형

Azure의 핵심 아키텍처 구성 요소 설명

Azure 계정

  • Azure 서비스 활용을 위해 Azure 구독이 필요함 (ex. 회사에서 단일 계정을 만든 후 부서별 구독을 생성할 수도 있음)




Azure infra

물리적 인프라

  • 물리적 인프라 : 데이터센터와 같이 전용 전원, 냉각 및 네트워킹 인프라를 갖춘 랙에 배치된 리소스가 있는 시설
  • Region (지역) : 데이터 센터를 하나 이상 포함하고 있는(여러 개 포함 가능) 지리적 영역
  • Availability Zone (가용성 영역) : Azure 지역 내에서 물리적으로 분리된 데이터 센터
  1. 가용성 영역은 독립된 전원, 냉각 및 네트워킹을 갖춘 하나 이상의 데이터 센터로 구성
  2. 한 가용성 영역 내에 컴퓨팅, 스토리지, 네트워킹 및 데이터 리소스를 공동 배치하고 다른 가용성 영역에 복제하여 애플리케이션 아키텍처에 고가용성을 구현




  • Region Pair (지역 쌍) : 대부분의 Azure 지역은 300마일 이상 떨어져 있는 동일한 지리적 위치(예: 미국, 유럽 또는 아시아) 내의 다른 Azure 지역과 쌍을 이룸 -> 단일 지역의 여러 가용성 영역에 영향을 주는 경우 대비




  • Sovereign Region (소버린 지역) : Azure의 주 인스턴스에서 격리된 Azure의 인스턴스
  1. 규정 준수 또는 법적 목적을 위해 소버린 지역을 사용
  2. US DoD 중부, US Gov 버지니아, US Gov 아이오와 등 : 선별된 미국인이 운영하며 추가 규정 준수 인증서를 포함
  3. 중국 동부, 중국 북부 등 : Microsoft와 21Vianet 간의 고유한 파트너십을 통해 사용할 수 있으며, Microsoft에서 데이터 센터를 직접 관리하지 않음


관리 인프라

  • 관리 인프라 : Azure 리소스 및 리소스 그룹, 구독 및 계정이 포함
  • Resource Group (리소스 그룹) : 말그대로 리소스의 그룹
  1. 리소스를 만드려면 리소스 그룹 하위에 둬야 함
  2. 리소스는 한 개의 리소스 그룹만 연결 가능
  3. 자신에게 가장 유용한 방향으로 리소스 그룹을 설정하는 방식을 고려


  • Subscription (구독) : 관리, 청구 및 크기 조정의 단위 -> 구독은 리소스 그룹을 논리적으로 구성하고 청구를 용이하게 할 수 있음
  1. Azure 구독은 Microsoft Entra ID 또는 Microsoft Entra ID가 신뢰하는 디렉터리에 있는 ID인 Azure 계정과 연결


  • Management Group (관리 그룹) : Azure 관리 그룹은 구독 상위 수준의 범위를 제공 -> 구독을 관리 그룹이라고 하는 컨테이너에 구성하고 거버넌스 조건을 관리 그룹에 적용
  1. 단일 디렉터리에서 지원할 수 있는 관리 그룹 수는 10,000개
  2. 관리 그룹 트리에서 지원할 수 있는 최대 깊이 수준은 6




Azure Policy 이니셔티브

  • Azure Policy : Azure 리소스에 대한 규칙과 효과를 적용하여 IT 거버넌스 표준을 준수하도록 하는 거버넌스 정책을 만들고, 할당하고, 관리할 수 있는 서비스
  • Azure Policy 이니셔티브 : 특정 목표나 목적을 향해 그룹화된 Azure Policy 정의의 컬렉션


Azure용 Microsoft Cloud Adoption Framework

  • Azure용 Microsoft Cloud Adoption Framework : Microsoft Azure에 대한 포괄적인 기술 지침을 제공




  • 프레임워크 내에서 Microsoft Azure Policy는 거버넌스 프레임워크에서 중요한 역할을 하여 클라우드 환경과 워크로드를 거버넌스하는 데 도움이 됨
  • 포괄적인 클라우드 거버넌스는 클라우드 사용의 모든 측면을 감독하고, 다양한 위험(예: 규정 준수, 보안, 리소스 관리 및 데이터 관련 우려)을 최소화하며, 조직 전체에서 클라우드 운영을 최적화
  • Cloud 거버넌스 프로세스 -> 진화하는 기술, 위험 및 규정 준수 요구 사항에 적응하기 위해 지속적인 모니터링, 평가 및 조정이 필요




  1. 거버넌스 팀 구성 - 클라우드 거버넌스 정책의 진행 상황을 정의하고, 유지하고, 보고하는 전담 클라우드 거버넌스 팀을 구성합니다.
  2. 클라우드 위험 평가 - 규정 준수, 보안, 운영, 비용, 데이터 관리, 리소스 관리, AI 관련 위험을 포함한 모든 위험 범주를 다루며 조직에 맞는 철저한 위험 평가를 수행합니다.
  3. 클라우드 거버넌스 정책 문서화 - 허용 가능한 클라우드 사용을 규정하고 식별된 위험을 완화하는 규칙과 지침을 설명하는 클라우드 거버넌스 정책을 명확하게 문서화합니다.
  4. 클라우드 거버넌스 정책 시행 - 클라우드 거버넌스 정책 준수를 보장하기 위한 체계적인 접근 방식을 구현합니다. 수동 감독과 함께 자동화된 도구를 사용하여 준수를 시행합니다. 이러한 도구는 가드레일을 설정하고, 구성을 모니터링하고, 정책을 준수하는 데 도움이 됩니다.
  5. 클라우드 거버넌스 모니터링 - 클라우드 사용과 거버넌스 팀을 정기적으로 모니터링하여 기존 클라우드 거버넌스 정책을 지속적으로 준수하는지 확인합니다.


  • 클라우드 거버넌스 정책 정의 고려사항
  1. 비즈니스 위험 – 데이터 분류와 애플리케이션 중요도에 따라 변화하는 비즈니스 위험과 기업의 위험 허용 범위를 문서화해야 합니다.
  2. 정책 및 규정 준수 – 클라우드 도입 경계를 효율적으로 설정하려면 위험 결정을 정책 진술로 전환해야 합니다.
  3. 프로세스 – 회사 정책 위반 및 준수 사항을 모니터링하기 위한 프로세스를 수립해야 합니다.


  • 클라우드 거버넌스 핵심 원칙
  1. 비용 관리 – IT 지출을 통제하여 잘 정의된 비용 관리를 수립하는 것을 포함하여 비용을 평가하고 모니터링합니다. 또한 수요에 따라 리소스를 조정하는 것도 포함됩니다. 투자에서 더 큰 가치를 얻으려면 클라우드 지출을 통제하는 것이 중요합니다.
  2. 보안 기준선 – 모든 도입 노력에 보안 기준을 적용하여 IT 보안 요구 사항 준수를 보장합니다.
  3. 리소스 일관성 – 리소스 구성의 일관성을 보장하고 온보딩, 복구 및 검색 가능성에 대한 관행을 시행합니다.
  4. ID 기준선 – 역할 정의와 할당을 일관되게 적용하여 ID 및 액세스에 대한 기준이 시행되도록 보장합니다.
  5. 배포 가속화 – 배포 템플릿 전반의 중앙 집중화, 일관성 및 표준화를 통해 정책 배포를 가속화합니다.


=> Azure의 주요 거버넌스 도구는 Azure Policy


Azure Policy

  • 특징
  1. 중앙 집중식 관리를 허용 -> 규정 준수 데이터를 한 곳에서, 환경 전반적인 상태를 집계한 뷰 제공
  2. 규정 준수 표준을 일관되게 준수하고 잘못된 구성을 방지
  3. 기존 리소스에 대한 대량 수정 및 새 리소스에 대한 자동 수정을 통해 리소스를 규정 준수 상태로 만드는 데 도움 -> 비준수 리소스와 구성을 자동으로 수정하여 리소스 상태의 무결성을 보장 -> 해당 리소스를 예외로 표시하면 정책이 자동으로 업데이트되지 않음
  4. Azure Policy를 Azure 플랫폼에 직접 임베드하면 외부 승인 프로세스의 필요성을 크게 줄여 개발자 생산성을 높임


  • 기능
  1. 정책을 준수하지 않는 리소스를 강조 표시
  2. 비준수 리소스가 생성되는 것을 방지
  3. Storage, Networking, Compute, Security Center 및 Monitoring에 대한 기본 제공 정책 및 이니셔티브 정의가 함께 제공
  4. 정책이 생성되기 전에 만들어진 VM을 포함하여 환경의 모든 현재 VM을 평가하고 모니터링
  5. Azure DevOps와도 통합


  • Azure Policy를 활용한 유용한 작업 예시
  1. 팀이 허용된 지역에만 Azure 리소스를 배포하는지 확인하세요.
  2. 데이터 상주 요구 사항을 준수하기 위해 지리적 복제 규칙을 적용합니다.
  3. 클라우드 환경에는 특정 가상 머신 크기만 허용합니다.
  4. 리소스 전체에 걸쳐 분류 태그의 일관된 적용을 시행합니다.
  5. 서버에 시스템 업데이트를 권장합니다.
  6. 모든 구독 계정에 대해 다중 인증을 허용합니다.
  7. Azure Monitor Logs 작업 영역으로 진단 로그를 전송하려면 리소스가 필요합니다.


  • Azure Policy를 설계할 때의 목표 : 한 영역에서는 제어와 안정성을, 다른 영역에서는 속도와 결과 간의 균형을 맞추는 것 -> 운영 효율성이나 생산성을 방해하지 않으면서 거버넌스를 보장하는 데 필요한 수준의 제어를 구현할 수 있도록 환경을 매우 관리하기 쉬운 상태로 유지


  • Azure Policy 계층 구조




  1. 위 4개 계층중 하나에 Azure Policy 적용 가능
  2. 상위 계층 Azure Policy를 하위에서 상속받음


Azure Resource Manager

  • Azure Resource Manager : Azure의 배포 및 관리 서비스, Azure 리소스를 만들고, 업데이트하고, 삭제할 수 있는 관리 계층 제공
  • Azure Resource Manager는 Control Plane과 Data Plane으로 나뉨


Control Plane




  • Azure Resource Manager는 Control Plane에서 수행되는 모든 작업들을 관리함 (Azure Policy는 수행되는 작업중 하나)
  • Azure Resource Manager는 아래와 같은 Control Plane의 작업들을 관리하여 배포 후 Azure 리소스에 대한 통합관리 환경 제공
  1. Deploy from ARM Template
  2. Azure Policy
  3. Azure RBAC
  4. Auditing, Logs & Monitoring
  5. Consistent SDKs
  6. Tags Support
  7. Scoping
  8. Graph


Data Plane

  • Data Plane : 실제 작업이 발생하는 곳, Azure Policy는 Data Plane에서 상호작용하는 리소스가 정책을 준수하는지 확인
  • 데이터 작업이 리소스 정책을 준수하는지 등의 Data Plane 작업은 실제 서비스 엔드포인트에서 진행됨 (ex. Microsoft Azure Storage, SQL 데이터베이스 쿼리 등)
  • RBAC or ACL과 같은 서비스별 액세스 제어는 Data Plane의 권한도 관리하여 요청자가 올바른 권한을 가지고 있는지 확인함
  • Azure Policy 확장을 구현하는 것을 통해 Data Plane 작업을 지원할 수도 있음
  1. Microsoft.Kubernetes.Data : Kubernetes 클러스터 및 Pod, 컨테이너, 인그레스와 같은 구성 요소를 관리하는 데 사용
  2. Microsoft.KeyVault.Data : Azure Key Vault의 자격 증명 모음과 인증서를 관리하는 데 사용
  3. Microsoft.Network.Data : Azure Policy를 사용하여 Microsoft Azure Virtual Network Manager 사용자 지정 멤버십 정책을 관리하는 데 사용
  4. Microsoft.ManagedHSM.Data : Azure Policy를 사용하여 Azure Key Vault 관리형 HSM 키를 관리하는 데 사용
  5. Microsoft.DataFactory.Data : Azure Policy를 사용하여 Microsoft Azure Data Factory 아웃바운드 트래픽 도메인 이름을 거부하는 데 사용
  6. Microsoft.MachineLearningServices.v2.Data : Microsoft Azure Machine Learning 모델 배포를 관리하는 데 사용


Azure Resource Manager의 작업 흐름

  • Azure Resource에 대한 Azure 요청을 처리할 때 두 가지 시나리오가 있음 (Greenfield, Brownfield)




  • Greenfield (기존재하는 Azure Plicy 기반으로 Azure 리소스를 만들거나 업데이트할 때의 시나리오)
    : Azure Resource Manager를 호출하여 새 리소스를 만들 때, RBAC 및 Azure Policy 계층을 거쳐 리소스 공급자로 요청 전달 (RBAC 권한이 있어야 Azure Policy 호출되어 모든 정책에 대해 리소스가 검사됨) -> 리소스 생성 및 업데이트


  • Brownfield (Azure 리소스에 새로운 Azure Policy를 만들어 할당할 때의 시나리오)
    : 이런 경우 Azure 리소스에 대해 24시간마다 자동으로 Azure Policy 준수 검사 or 수동 검사를 통해 규정 준수 상태 업데이트


  • 규정준수 상태 업데이트 시점 : Greenfield는 ARM을 통해 리소스를 생성 및 업데이트하는 시점, Brownfield는 24시간마다 자동 검사 및 수동 검사 시점


Azure Policy 리소스

  • Azure에는 6개의 Policy 리소스가 있음




Definitions

  • Definitions : 리소스 규정 준수 조건과 조건 충족 시 적용되는 효과를 설명


Initiatives

  • Initiatives : 정책 집합, 단일 항목으로 여러 정책을 그룹화하여 할당 및 관리를 간소화할 수 있음
  • JSON 형태로 이니셔티브 정의 가능
  • 기본 제공 이니셔티브 : Azure 리소스에 기본적으로 제공되는 정책 그룹 -> Azure 리소스 전반에 중앙 집중식 제어 가능 (다양한 규제 프레임워크, 업계 표준 및 모범 사례 준수 지원)
  • 사용자 지정 이니셔티브 : 기본 제공 이니셔티브로 요구사항이 충족되지 않을 때 작성하는 정책 정의 유형 -> 조직의 고유한 요구 사항에 맞게 정책 집합을 맞춤 설정하여 환경에 가장 적합한 표준과 규칙을 적용할 수 있음


Assignments

  • Assignments : policy 혹은 initiatives에 의해 평가되는 리소스를 정의


  • 정책 적용에 대해 리소스별 차이를 둘 수 있음

  • enforcementMode를 비활성화하면 정의를 변경하지 않고도 "가정" 시나리오를 지원 -> 효과는 없지만 정책에 대한 평가 결과는 계속 확인 가능

  • "deployIfNotExists " 효과 유형 의 정책이 있는 경우, Azure Policy에서 평가할 리소스와 규정 준수에 포함되는 리소스가 결정


Exemptions

  • Exemptions : 리소스 계층 구조 또는 개별 리소스를 이니셔티브 또는 정의 평가에서 면제


  • 정책 면제는 할당 시점이 아닌 할당 시점 이후에 생성

  • 면제의 두 가지 범주

  1. 완화됨 : 정책 의도가 다른 방법을 통해 충족되었기 때문에 면제가 허용
  2. 면제 : 리소스의 비준수 상태가 일시적으로 수용되었기 때문에 면제가 허가


Attestations

  • Attestations : Attestations을 사용하여 수동정책의 대상이 되는 리소스 또는 범위의 규정 준수 상태를 설정할 수 있음. 수동 정책 할당당 하나의 증명이 필요


Remediations

  • Remediations : 정의 및 할당을 기반으로 리소스를 규정 준수 상태로 만드는 데 사용


Azure Policy 정의

  • Azure Policy 정의 : 리소스 규정 준수 조건과 해당 조건이 충족될 경우 발생하는 작업 또는 효과를 작성


  • 예시

{
  "displayName": "Allowed locations",
  "description": "This policy enables you to restrict the locations your organization can specify when deploying resources. Use to enforce your geo-compliance requirements. Excludes resource groups, Microsoft.AzureActiveDirectory/b2cDirectories, and resources that use the 'global' region.",
  "policyType": "BuiltIn",
  "mode": "Indexed",
  "metadata": {
    "version": "1.0.0",
    "category": "General"
  },
  "parameters": {
    "listOfAllowedLocations": {
      "type": "Array",
      "metadata": {
        "description": "The list of locations that can be specified when deploying resources.",
        "strongType": "location",
        "displayName": "Allowed locations"
      }
    }
  },
    "policyRule": {
      "if": {
        "allOf": [
          {
            "field": "location",
            "notIn": "[parameters('listOfAllowedLocations')]"
          },
          {
            "field": "location",
            "notEquals": "global"
          },
          {
            "field": "type",
            "notEquals": "Microsoft.AzureActiveDirectory/b2cDirectories"
          }
        ]
      },
      "then": {
        "effect": "deny"
      }
    }
  }
  1. displayName : 정책 정의 식별 이름
  2. description : 정책에 대한 설명 제공
  3. policyType : 정책의 유형 (기본제공, 사용자지정, 정적)
  4. mode
    1. 리소스 관리자 all : 리소스 그룹, 구독 및 모든 리소스 유형을 평가
    2. 리소스 관리자 Indexed : 리소스 그룹, 구독 및 모든 리소스 유형을 평가
    3. 리소스 공급자 limited to Built in policies and fully supported
    4. 리소스 공급자 limited to Built in policies and in preview mode
  5. metadata : 정책 정의에 대한 정보를 저장 (version, category, preview 여부 등)
  6. parameters : 정책 정의에 매개변수를 포함시켜 다양한 시나리오에서 서로 다른 값을 사용하여 해당 정책을 재사용할 수 있도록 함
  7. policyRule : 정책의 효과는 policyRule 에 정의, 정책 규칙은 if 및 then 블록으로 구성


  • if블록 연산자
  1. not : 조건의 결과 반전
  2. allOf : 모든 조건이 참이어야 함
  3. anyOf : 하나 이상의 조건이 참이어야 함


Azure Policy를 통한 리소스 평가

  • 할당된 정책과 이니셔티브에 대한 평가는 다양한 이벤트의 결과로 발생
  1. 정책이나 이니셔티브가 범위에 새로 할당
  2. 범위에 이미 할당된 정책이나 이니셔티브가 업데이트
  3. 리소스는 Azure Resource Manager, REST API 또는 지원되는 SDK로 할당을 통해 범위에 배포되거나 업데이트
  4. 구독(리소스 유형 Microsoft.Resources/subscriptions)은 구독 리소스 유형을 대상으로 하는 할당된 정책 정의를 사용하여 관리 그룹 계층에서 생성되거나 이동
  5. 정책 면제가 생성, 업데이트 또는 삭제
  6. 표준 준수 평가 주기
  7. 머신 구성 리소스 공급자는 관리되는 리소스에 의해 규정 준수 세부 정보로 업데이트
  8. 주문형 스캔


  • 리소스 규정 준수 상태
  1. 비준수
  2. 규정 준수
  3. 오류 (템플릿 또는 평가 오류)
  4. 충돌 (동일한 범위 내에서 서로 모순되는 규칙을 가진 두 개 이상의 정책 할당, 예: 서로 다른 값을 가진 동일한 태그를 추가하는 두 정책)
  5. 보호됨 ( denyAction 효과 가 있는 할당에 따라 보호되는 리소스 )
  6. 면제됨 알 수 없음 ( 수동 효과가 있는 정의에 대한 기본 상태 )


  • 준수율 : (준수 + 면제 + 알 수 없음 리소스) / 총 리소스


  • enforcementMode : 특정 정책 효과의 적용을 비활성화할 수 있는 정책 할당 속성 -> 이 모드를 사용하면 정책 효과를 시작하거나 Azure 활동 로그 에 항목을 트리거하지 않고도 기존 리소스에서 정책 결과를 테스트할 수 있음 -> 일반적으로 What If( 가상 상황) 라고 하며 안전한 배포 관행에 부합


  • 정책 시행 및 안전한 배포 모범사례 : 정책을 코드처럼 처리하면(정책 정의를 소스 제어에 유지하고 변경 사항이 발생할 때마다 해당 변경 사항을 테스트하고 검증) 테스트를 자동화하고 수동 오류 요인이 발생하지 않도록 할 수 있음

  1. 새로운 정책 할당부터 시작 : enforcementMode가 비활성화된 상태로 시작하면 작업을 트리거하거나 작업을 거부하지 않고도 규정 준수 상태를 확인하고 정책 결과를 평가할 수 있음 -> What If( 가상 상황)
  2. 정책을 작은 하위 집합에서 점진적으로 배포한 후 더 큰 집합으로 배포


  1. 정의 생성 : 범위를 루트(테넌트)로 하여 정책 정의를 정의
  2. 할당 생성 : 리소스 선택기를 사용하여 배포 링(1~5)을 정의. 링 5에서 특정 범위(예: 리소스 그룹, 구독 또는 관리 그룹)에 정책을 할당. 변경 사항을 적용하지 않고 규정 준수 여부를 평가하려면 EnforcementMode 를 비활성화하여 할당.
    1. 규정 준수 검사 - 정책이 올바르게 적용되는지 확인하고 Ring 5의 리소스에 대해 원하는 규정 준수 상태가 달성되었는지 확인합니다.
    2. 애플리케이션 상태 점검 - 링 5의 리소스에 대한 정책의 영향을 평가합니다. 예상치 못한 부작용이 없는지 확인합니다.
  3. 각 링(비생산 환경)에 대해 반복합니다 . 모든 비생산 환경 링에 대해 3단계를 반복합니다.
  4. 할당 업데이트(선택 사항) : 필요한 경우 비생산 환경의 리소스 평가에 따라 정책 정의 또는 할당을 조정한 다음, enforcementMode 가 활성화된 링 5의 리소스에 다시 할당.
    1. 규정 준수 확인 : 변경 사항을 적용한 후 규정 준수 여부를 재평가(3a단계와 동일).
    2. 애플리케이션 상태 점검 : 다시 한번, 정책이 문제를 일으키지 않는지 확인(3b단계와 동일).
  5. 각 링(비생산 환경)에 대해 반복. 모든 비생산 환경 링에 대해 6단계를 반복.
  6. 프로덕션 링에 대해서도 반복. 정책이 비프로덕션 환경에서 검증된 후 점진적으로 프로덕션 환경에 배포. 먼저 작은 하위 집합(링)부터 시작하여 시간이 지남에 따라 범위를 확장.


  • Azure Policy 이벤트
  1. 이벤트를 통해 애플리케이션이 정책 상태 변경에 대응
  2. Microsoft Azure Event Grid를 통해 이벤트 처리기로 푸시됨
  3. Microsoft Azure Functions, Microsoft Azure Logic Apps 또는 사용자 지정 HTTP 리스너와 같은 여러 서비스를 구성하여 이벤트를 처리 가능

반응형
728x90
반응형

Microsoft Entra ID



  • AD DS (Active Directory Domain Services)
  1. 사용자 계정 및 암호와 같은 데이터를 저장하는 방법 제공
  2. 네트워크 사용자, 관리자, 기타 디바이스 및 application에서 데이터를 사용할 수 있도록 기능 제공


  • Microsoft Entra ID
  1. 구현에 대한 통제력이 줄어들지만, 배포 또는 유지관리에 신경쓰지 않아도 됨
  2. 다단계 인증, ID 보호, 셀프서비스 암호 재설정 지원 등 AD DS에서 기본적으로 제공하지 않는 기능도 사용 가능
  3. 안전한 액세스 기능 제공
    1. 애플리케이션에 대한 액세스를 구성합니다.
    2. 클라우드 기반 SaaS 애플리케이션에 SSO(Single Sign-On) 구성
    3. 사용자 및 그룹 관리
    4. 사용자 프로비전
    5. 조직 간 페더레이션 사용
    6. ID 관리 솔루션 제공
    7. 비정상적인 로그인 활동 식별
    8. 다단계 인증 구성
    9. 기존 온-프레미스 Active Directory 구현을 Microsoft Entra ID로 확장합니다.
    10. 클라우드 및 로컬 애플리케이션의 애플리케이션 프록시 구성
    11. 사용자 및 디바이스의 조건부 액세스 구성



  • Microsoft Entra ID를 구현하는 것은 Azure에서 가상 머신을 배포하고 AD DS를 추가한 다음, 새 포리스트 및 도메인에 대한 일부 도메인 컨트롤러를 배포하는 것과는 다름 -> AD DS는 온프레미스에 더 중점, Microsoft Entra ID는 클라우드 웹 application에 ID 관리 서비스 제공에 더 중점


Microsoft Entra 테넌트




  • 테넌트란?
  1. 테넌트는 하나의 ID (개인, 기업, 조직 단위)
  2. 테넌트는 한 개 혹은 여러 개의 구독을 가질 수 있음
  3. 구독에서 Azure 컴퓨팅 리소스 사용 가능 (ex. VM, storage, network 등)
  4. 구독당 여러 개의 Microsoft Entra 테넌트 생성 가능
  5. 구독->테넌트 연결은 한 개만 연결 가능
  6. 테넌트->구독 연결은 여러개 가능 -> RBAC를 통해 Azure 구독의 리소스에 대한 권한을 특정 Microsoft Entra 테넌트에 있는 사용자, 그룹, 애플리케이션에 부여


AD DS vs Microsoft Entra ID

  • AD DS : AD DS는 물리적 서버 또는 가상 서버에 Windows Server 기반 Active Directory를 배포한 것


  • AD DS 특징

  1. AD DS는 계층적 X.500 기반 구조를 사용하는 진정한 디렉터리 서비스입니다.
  2. AD DS는 DNS(Domain Name System)를 사용하여 도메인 컨트롤러와 같은 리소스를 찾습니다.
  3. LDAP(Lightweight Directory Access Protocol) 호출을 사용하여 AD DS를 쿼리하고 관리할 수 있습니다.
  4. AD DS는 인증하기 위해 Kerberos 프로토콜을 주로 사용합니다.
  5. AD DS는 관리를 위해 OU 및 GPO를 사용합니다.
  6. AD DS에는 Active Directory 도메인에 가입하는 컴퓨터를 나타내는 컴퓨터 개체가 포함됩니다.
  7. AD DS는 위임된 관리를 위해 도메인 간의 트러스트를 사용합니다.


  • Microsoft Entra ID 특징
  1. Microsoft Entra ID는 주로 ID 솔루션으로, HTTP(포트 80) 및 HTTPS(포트 443) 통신을 사용하여 인터넷 기반 애플리케이션용으로 설계되었습니다.
  2. Microsoft Entra ID는 다중 테넌트 디렉터리 서비스입니다.
  3. Microsoft Entra 사용자 및 그룹은 플랫 구조로 생성되며 OU나 GPO는 없습니다.
  4. LDAP를 사용하여 Microsoft Entra ID를 쿼리할 수 없습니다. 대신 Microsoft Entra ID는 HTTP 및 HTTPS를 통해 REST API를 사용합니다.
  5. Microsoft Entra ID는 Kerberos 인증을 사용하지 않는 대신, SAML, WS-Federation 및 OpenID Connect와 같은 HTTP 및 HTTPS 프로토콜을 사용하여 인증하고 권한 부여에 OAuth를 사용합니다.
  6. Microsoft Entra ID에는 페더레이션된 서비스가 포함되어 있고 Facebook과 같은 많은 타사 서비스가 Microsoft Entra ID와 페더레이션되며 Microsoft Entra ID를 신뢰합니다.


  • 요약
    => Mircosoft Entra ID 서비스는 클라우드 application용 SSO 서비스로 보임.
    => 그리고 테넌트(개인, 회사, 조직) 단위로 관리됨.
    => 테넌트는 하나의 구독에 의해 만들어지고, 여러 구독에서 접근할 수 있음
    => AD DS는 온프레미스 서비스에 집중, Microsoft Entra ID 서비스는 클라우드 application 서비스에 집중
    => 다양한 액세스 및 보안 기능 제공 (위 내용 참고)
    => Microsoft 365, Azure, Microsoft Dynamics 365, Intune과 같은 모든 Microsoft 클라우드 기반 서비스를 포함할 수 있는 ID를 가질 수 있음


Microsoft Entra Plan

  1. P1, P2 : 일반적인 plan
  2. 프리미엄 : 가장 높은 등급, 사용자가 추가될 때마다 추가요금 부과


  • P1, P2 plan 공통 기능
  1. 셀프 서비스 그룹 관리 : 사용자에게 그룹을 만들고 관리할 수 있는 권한이 부여되는 그룹 관리를 간소화합니다. 최종 사용자는 다른 그룹에 가입 요청을 생성할 수 있으며 그룹 소유자는 요청을 승인하고 그룹의 멤버 자격을 유지할 수 있습니다.
  2. 고급 보안 보고서 및 경고 : 비정상과 일관성 없는 액세스 패턴에 대한 고급 보고서를 보여 주는 상세 로그를 확인하여 클라우드 애플리케이션에 대한 액세스를 모니터링하고 보호할 수 있습니다. 고급 보고서는 기계 학습 기반이며 액세스 보안을 개선하고 잠재적 위협에 대응하는 새로운 인사이트를 얻는 데 도움이 될 수 있습니다.
  3. 다단계 인증 : 전체 MFA(다단계 인증)는 온-프레미스 애플리케이션(VPN[가상 사설망], RADIUS 등을 사용), Azure, Microsoft 365, Dynamics 365, 타사 Microsoft Entra 갤러리 애플리케이션에서 작동합니다. Microsoft Outlook과 같이 브라우저에 기반하지 않은 상용 앱에서는 작동하지 않습니다. 전체 다단계 인증은 이 단원의 다음 단계에서 자세히 설명합니다.
  4. Microsoft Identity Manager(MIM) 라이선싱 : MIM은 Microsoft Entra ID P1 또는 P2와 통합하여 하이브리드 ID 솔루션을 제공합니다. MIM은 AD DS, LDAP, Oracle, 기타 애플리케이션과 같은 여러 온-프레미스 인증 저장소를 Microsoft Entra ID와 연결할 수 있습니다. 이는 온-프레미스 LOB(기간 업무) 애플리케이션과 Saas 솔루션에 일관성 있는 경험을 제공합니다.
  5. 99.9%의 엔터프라이즈 SLA : Microsoft Entra ID P1 또는 P2 서비스의 가용성이 99.9% 이상 보장됩니다. 동일한 SLA가 Microsoft Entra Basic에 적용됩니다.
  6. 쓰기 저장을 사용하여 암호 재설정 : 셀프 서비스 암호 재설정은 Active Directory 온-프레미스 암호 정책을 따릅니다.
  7. Microsoft Entra ID의 Cloud App Discovery 기능입니다. 이 기능은 가장 자주 사용되는 클라우드 기반 애플리케이션을 검색합니다.
  8. 디바이스나 그룹, 위치를 기반으로 하는 조건부 액세스 : 이렇게 하면 여러 기준에 따라 중요한 리소스에 대한 조건부 액세스를 구성할 수 있습니다.
  9. Microsoft Entra Connect Health : 이 도구를 사용하여 Microsoft Entra ID에 대한 운영 인사이트를 얻을 수 있습니다. 경고, 성능 카운터, 사용 패턴, 구성 설정과 함께 작동하며 Microsoft Entra Connect Health 포털에서 수집된 정보를 제공합니다.


  • P2 plan 추가 기능
  1. Microsoft Entra ID 보호 : 이 기능은 사용자 계정을 모니터링하고 보호하기 위한 향상된 기능을 제공합니다. 사용자 위험 정책 및 로그인 정책을 정의할 수 있습니다. 또한 사용자의 동작을 검토하고 사용자에게 위험에 대한 플래그를 지정할 수 있습니다.
  2. Microsoft Entra Privileged Identity Management : 이 기능을 사용하면 관리자와 같은 권한 있는 사용자에 대한 추가 보안 수준을 구성할 수 있습니다. Privileged Identity Management를 사용하면 영구 및 임시 관리자를 정의합니다. 또한 누군가가 관리 권한을 사용하여 일부 작업을 수행하려고 할 때마다 활성화되는 정책 워크플로를 정의합니다.


Microsoft Entra Domain Services

  • As-Is : 온프레미스로 application을 구동할 때 인증기능은 AD DS 기반 자격증명 활용 -> Application이 Azure 인프라를 활용하는 경우, 로컬 인프라와 Azure IaaS 간에 사이트 간 VPN(가상 사설망)을 구현하거나 Azure에서 로컬 AD DS의 복제본 도메인 컨트롤러를 VM(가상 머신)으로 배포하여 인증기능 구현
  • To-Be : Microsoft Entra Domain Services
  • Microsoft Entra Domain Services : 위에서 언급된 로컬 배포된 AD DS 인증기능의 대안으로서 그룹 정책 관리, 도메인 가입, Kerberos 인증과 같은 도메인 서비스를 Microsoft Entra 테넌트에 제공하는 서비스 -> 로컬로 배포된 AD DS와 완전히 호환되므로 클라우드에서 추가 도메인 컨트롤러를 배포하고 관리할 필요 없이 사용 가능




  • 특징
  1. Microsoft Entra Connect를 구현하면 사용자는 온-프레미스 AD DS와 Microsoft Entra Domain Services 모두에서 조직 자격 증명을 활용 가능
  2. AD DS를 로컬에 배포하지 않은 경우에도 Microsoft Entra Domain Services를 클라우드 전용 서비스로 사용하도록 선택 가능
  3. 방법 : 조직은 Microsoft Entra 테넌트를 만들고 Microsoft Entra Domain Services를 사용하도록 설정한 다음 온-프레미스 리소스와 Microsoft Entra 테넌트 간에 가상 네트워크를 배포하도록 선택 -> 모든 온-프레미스 사용자 및 서비스가 Microsoft Entra ID의 도메인 서비스를 사용할 수 있도록 이 가상 네트워크에 대해 Microsoft Entra Domain Services를 사용하도록 설정


  • 이점
  1. 관리자가 도메인 컨트롤러를 관리, 업데이트, 모니터링할 필요가 없음
  2. 관리자가 Active Directory 복제본을 배포하고 관리할 필요가 없음
  3. Microsoft Entra ID가 관리하는 도메인에 대해서는 도메인 관리자 또는 엔터프라이즈 관리자 그룹이 필요하지 않음
  4. LDAP, NTLM 또는 Kerberos 프로토콜을 사용하는 애플리케이션을 온-프레미스 인프라에서 클라우드로 자유롭게 마이그레이션


  • 한계
  1. 기본 컴퓨터 Active Directory 개체만 지원
  2. Microsoft Entra Domain Services 도메인에 대한 스키마를 확장하는 것은 불가능
  3. OU(조직 구성 단위) 구조는 수평적이며 중첩된 OU는 현재 지원되지 않음
  4. 기본으로 제공되는 GPO(그룹 정책 개체)가 있으며 컴퓨터와 사용자 계정에 대해 존재
  5. 기본 제공 GPO를 사용하는 OU를 대상으로 할 수 없습니다. 또한 WMI(Windows Management Instrumentation) 필터 또는 보안 그룹 필터링을 사용할 수 없음


ID 생성, 구성, 관리

  • Azure 리소스 사용을 위해서 Azure 사용자 계정이 필요 -> 제어가 필요한 리소스에 대한 Microsoft Entra에 사용자 계정 등록

  • 리소스 사용 시, 사용자 정보 기반으로 로그인 프로세스 진행 -> Microsoft Entra ID로부터 액세스 토큰 발급 -> 토큰의 권한에 따라 리소스 액세스 가능


  • Microsoft Entra ID에서 정의한 사용자 유형

  1. 클라우드 ID : Microsoft Entra ID에만 존재, 리소스 제어가 필요하여 다른 Microsoft Entra 인스턴스의 계정이 등록된 경우도 있음 (해당 경우에 다른 Microsoft Entra에서 계정이 삭제될 경우, 다른 모든 Microsoft Entra에서 계정 삭제됨) -> Micosoft Entra ID 하위로 Microsoft Entra 인스턴스가 있는듯...? 추측
  2. 디렉터리 동기화된 ID : 온프레미스 Active Directory에 존재하는 ID, Microsoft Entra Connect를 통한 동기화 작업으로 계정을 Azure로 가져옴 (출처는 Windows Server AD)
  3. 게스트 사용자 : Azure 외부에 존재하는 사용자 계정 (ex. 다른 클라우드 공급자 계정, Xbox와 같은 Microsoft 계정 등), 외부 사용자가 해당 리소스에 사용해야하는 경우


  • Microsoft Entra Device




  • Microsoft Entra Join Device




  • 요약
  1. Microsoft Entra ID 에 사용자 (ID)를 추가할 수 있음 (추가 형태는 위 유형 참고)
    • 사용자 추가는 Microsoft Entra ID 관리자 권한
    • 일반 사용자는 게스트 사용자 유형으로만 추가할 수 있음
  2. 추가된 사용자는 동일 Microsoft Entra의 그룹에 할당될 수 있음 (Microsoft Entra ID - 그룹 - 사용자, 계층 형성)
    • 그룹 유형
      1. 보안 그룹 : 공유 리소스에 대한 구성원 및 컴퓨터 액세스를 관리하는 데 사용
      2. Microsoft 365 그룹 : 공유 사서함, 일정, 파일, SharePoint 사이트 등에 대한 액세스 권한을 구성원에게 부여
    • 그룹 사용자 추가 유형
      1. 할당됨 : 그룹 구성원이 수동으로 추가
      2. 동적 할당 : 임의로 설정한 규칙에 따라 조건에 부합하는 Microsoft Entra ID내 사용자를 자동으로 그룹에 추가
  3. 그룹에 라이선스 할당을 할 수 있음
    • Microsoft Entra ID 관리자 권한
  4. Microsoft Entra ID에서 삭제된 사용자는 30일 이내에 다시 복원 가능
    • Microsoft Entra ID 관리자 권한
  5. Microsoft Entra Device : 조직에서의 Device에 대한 정책 적용 가능
    • 조직 리소스에 액세스하기 위해 추가로 연결된 Microsoft Entra 계정이 있음 -> 조직의 Microsoft Entra 계정인듯
      1. 디바이스가 준수해야하는 규칙이 있을 경우 추가 제한 여지 있음
    • MDM(모바일 디바이스 관리) 도구를 사용하여 이러한 Microsoft Entra 등록 디바이스를 보호하고 추가로 제어
      1. MDM : 스토리지 암호화, 암호 복잡성 유지, 보안 소프트웨어 업데이트 등 기능 제공
    • Microsoft Entra 조인을 사용하여 클라우드와 온-프레미스 앱 및 리소스에 모두 액세스 가능
      1. 클라우드 및 온-프레미스 리소스 모두에 대한 SSO, 조건부 액세스, 셀프 서비스 암호 재설정 및 Windows Hello PIN 재설정 가능
      2. 조직의 Microsoft Entra 계정을 사용하여 로그인
  6. 라이선스 관리 - 유료 클라우드 서비스 활용을 위해 라이선스 할당 필요
    • 대규모 관리를 위해 Microsoft Entra ID 그룹 기반 라이선스 할당 활용
    • 라이선스 갯수는 최소 사용자 수에 맞게 준비되어야 함 -> 모든 사용자가 유료 서비스를 활용할 수 있도록
    • 최종 사용자 라이선스는 여러 그룹 및 그룹 외부로부터 할당된 제품 및 서비스 라이선스의 조합 -> 라이선스가 중복될 경우 1개만 사용됨
  7. 사용자 지정 보안 특성 : 사용자별로 집합 관리를 위한 메타정보 세팅 가능 (key-value 형태)


  • SCIM(System for Cross-domain Identity Management)
    : ID 도메인과 IT 시스템 간의 사용자 ID 정보 교환을 자동화하기 위한 개방형 표준 프로토콜 -> SCIM을 사용하면 HCM(Human Capital Management) 시스템에 추가된 직원이 Microsoft Entra ID 또는 Windows Server Active Directory에서 만든 계정을 자동으로 갖게 됨 (시스템간 동기화)

반응형
728x90
반응형

본 글은 아래 링크의 학습자료를 학습한 후에 정리한 글입니다.
https://learn.microsoft.com/ko-kr/training/paths/az-104-administrator-prerequisites/


Azure Basic (AZ-900 내용)

  • Azure Arc : 클라우드 환경 관리를 지원하는 기술
  • Azure VMware : 프라이빗 환경에서 VMware를 사용하다가 Azure에 마이그하는 경우 사용하는 솔루션


클라우드 활용 이점

  • 안정성 및 예측가능성 관점
  1. 신뢰도 : 분산된 설계를 통한 안정적이고 복원력 있는 인프라 지원
  2. 예측 : 성능 및 비용 예측 솔루션 제공 -> 최적의 성능과 비용의 서비스를 위해 컴퓨팅 시스템 자동 조정 기능 제공


  • 보안 및 거버넌스 관점
  1. 소프트웨어 패치 및 업데이트 자동 적용
  2. 요구 보안수준별 클라우드 솔루션 제공


  • 관리효율 관점
  1. 컴퓨팅 리소스 자동 스케일링
  2. 템플릿 기반 리소스 자동 배포
  3. 리소스 모니터링 및 자동 교체
  4. 메트릭 기반 알람 기능


클라우드 서비스 유형




  • Iaas (Infrastructure as a Service)
  1. 클라우드 공급자는 하드웨어, 네트워크 연결 및 물리적 보안을 유지관리할 책임이 있음


  • Paas (Platform as a Service)
  1. 클라우드 공급자는 하드웨어, 네트워크 연결 및 물리적 보안을 유지관리할 책임뿐만 아니라 클라우드 솔루션을 구성하는 운영 체제, 미들웨어, 개발 도구 및 비즈니스 인텔리전스 서비스를 유지 관리할 책임이 있음 -> 운영체제 및 데이터베이스에 대한 라이선스 또는 패치에 대해 걱정할 필요가 없음
  2. 도메인이 세팅된 컴퓨터를 사용하는 것과 같음 -> Paas에서 기본으로 제공하는 소프트웨어를 활용하여 애플리케이션 개발


  • Saas (Software as a Service)
  1. 완전히 개발된 애플리케이션을 임대하거나 사용 -> 유연성이 가장 안좋으나 쉽게 시작 가능


Azure Portal을 사용하여 서비스 관리

  • Azure 관리 옵션
  1. Azure Portal : GUI(그래픽 사용자 인터페이스)를 통해 Azure 조작
  2. Azure PowerShell 및 Azure 명령줄 인터페이스(CLI) : Azure의 명령줄 및 자동화 기반 상호 작용 (PowerShell은 window, CLI는 mac/linux)
  3. Azure Cloud Shell : 웹 기반 명령줄 인터페이스
  4. Azure 모바일 앱 : 모바일 디바이스에서 리소스를 모니터링하고 관리
  5. Azure SDK
  6. Azure REST API

반복적인 작업에는 Azure Portal보다 PowerShell, CLI가 유용할 수 있음


  • Azure CLI 사용방법 (macOS)
  1. 터미널에서 Azure CLI 설치
  2. az login 명령어를 통한 로그인 (Subscription이 있어야 로그인이 되는듯)
  3. vm 생성이 필요하다면 아래 명령어 실행 az vm create --resource-group MyResourceGroup --name TestVm --image Ubuntu2204 --generate-ssh-keys ...


  • Azure Advisor : 배포된 서비스를 분석하고 해당 영역에서 환경을 개선할 수 있는 방법을 제안


  • Azure Portal 대시보드
  1. 다른 구성원과 대시보드를 공유할 수 있음
  2. 대시보드는 JSON 형태로 저장 (다른 사용자와 공유 가능)
  3. 내 대시보드를 다른 사용자가 보게 하려면 "공유" 옵션에서 설정 가능 (리소스 그룹 혹은 대시보드 리소스 그룹 지정)
  4. 보는 것과 별개로 특정 역할에 대한 대시보드를 만들고 해당 대시보드에 접근할 수 있는 사용자를 제어할 수 있음(RBAC, 역할 기반 액세스 제어)


Azure Cloud Shell 소개

  • Azure Cloud Shell : Azure 리소스를 관리하기 위한 CLI환경의 브라우저


  • 장점

  1. 업무용 컴퓨터 외의 다른 컴퓨터에서도 Azure 리소스에 접근 가능
  2. Azure CLI 버전이 자동으로 최신 update
  3. Azure Cloud Shell이 제공하는 스토리지에 SSH키, 스크립트 등과 같은 파일을 저장할 수 있고, 어떤 컴퓨터나 세션에서 Cloud Shell을 통해 접근 가능


  • Cloud Shell에서 활용할 수 있는 도구




  • Cloud Shell을 사용하면 안되는 경우
  1. 장기 실행 스크립트 또는 활동에 대해 세션을 20분 넘게 열어야할 경우 -> 장시간 연결 끊어짐
  2. Sudo 액세스 등과 같은 관리자 권한이 필요할 경우
  3. Cloud Shell에서 지원하지 않는 도구를 활용해야할 경우
  4. 다른 지역의 Cloud Shell 스토리지에 접근해야할 경우
  5. 세션을 동시에 열어야하는 경우


JSON ARM 템플릿을 사용하여 Azure 인프라 배포

  • JSON ARM (Azure Resource Manager) 템플릿을 사용하면 프로젝트의 인프라를 재사용 가능한 방식으로 선언할 수 있음


  • lac (Infrastructure as Code) : 코드를 통해 애플리케이션에 필요한 인프라를 작성

  • lac의 이점

  1. 인프라의 일관된 구성
  2. 인프라의 향상된 확장성
  3. 인프라의 더 빠른 배포


  • ARM 템플릿 : 배포를 위한 인프라 및 구성을 정의하는 JSON (JavaScript Object Notation) 파일
  • ARM 템플릿의 이점
  1. 배포 자동화
  2. lac 코드 활용 가능
  3. 배포가 더 복잡해지면 ARM 템플릿을 더 작고 재사용 가능한 구성 요소로 분할하고 배포 시 함께 연결 가능
  4. ARM 템플릿을 Azure Pipelines와 같은 CI/CD(연속 통합 및 지속적인 배포) 도구에 통합 가능

  • resource manager : 리소스가 올바른 순서로 만들어지도록 리소스 배포를 오케스트레이션


  • ARM 템플릿 파일 구조

  • Azure에 ARM 템플릿 배포 방법
  1. 로컬 템플릿 배포 : 로컬의 템플릿 파일을 Azure CLI 등을 활용하여 배포하는 방식
  2. 연결된 템플릿 배포 : 주 템플릿 파일에 연결된 템플릿이 배포되는 방식
  3. 지속적인 배포 파이프라인에서 배포 : CI/CD 파이프라인을 통한 배포 방식


  • ARM 템플릿에 리소스 추가 (리소스 공급자 및 해당 리소스 종류 확인 필요)


  • ARM 템플릿 예제

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.1",
  "apiProfile": "",
  "parameters": {},
  "variables": {},
  "functions": [],
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2023-05-01",
      "name": "learntemplatestorage123",
      "location": "westus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ],
  "outputs": {}
}



  • ARM 템플릿 유연성 강화를 위한 매개변수 활용
    : 템플릿에 하드코딩이 아닌 매개변수를 활용하는 방법 적용 -> 템플릿의 유연성 강화


  1. ARM 템플릿의 parameters 섹션에서 리소스를 배포할 때 입력할 수 있는 값을 지정 (256개 제한)
  2. 매개변수 권장사항
    • 환경에 따라 달라지는 설정에는 매개 변수를 사용
    • 직접 지정하거나 내부 명명 규칙을 준수하려는 리소스 이름에도 매개 변수를 사용
    • 사용자 이름 및/또는 암호의 기본값을 하드 코딩하거나 제공하지 않음 -> 사용자 이름 및 암호(또는 비밀)에는 항상 매개 변수를 사용
    • 모든 암호 및 비밀에는 secureString을 사용
    • 중요한 데이터를 전달하는 경우 secureObject 유형을 사용
    • secureString 또는 secureObject 형식을 사용하는 템플릿 매개 변수는 리소스를 배포한 후 읽거나 수집할 수 없음


  • 예시
"parameters": {
  "storageAccountType": {
    "type": "string",
    "defaultValue": "Standard_LRS",
    "allowedValues": [
      "Standard_LRS",
      "Standard_GRS",
      "Standard_ZRS",
      "Premium_LRS"
    ],
    "metadata": {
      "description": "Storage Account type"
    }
  }
},
"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2023-05-01",
    "name": "learntemplatestorage123",
    "location": "[resourceGroup().location]",
    "sku": {
      "name": "[parameters('storageAccountType')]"
    },
    "kind": "StorageV2",
    "properties": {
      "supportsHttpsTrafficOnly": true
    }
  }
]



  • 매개변수 활용 예시 (allowedValues에 해당하는 값이 입력되지 않으면 배포되지 않음)

templateFile="azuredeploy.json" az deployment group create --name testdeployment1 --template-file $templateFile --parameters storageAccountType=Standard_LRS


  • ARM 템플릿의 outputs 섹션에서 배포에 성공한 후 반환될 값을 지정
"outputs": {
  "<output-name>": {
    "condition": "<boolean-value-whether-to-output-value>",
    "type": "<type-of-output-value>",
    "value": "<output-value-expression>",
    "copy": {
      "count": <number-of-iterations>,
      "input": <values-for-the-variable>
    }
  }
}



  • 출력 예시
"outputs": {
  "storageEndpoint": {
    "type": "object",
    "value": "[reference('learntemplatestorage123').primaryEndpoints]"
  }
}
반응형
728x90
반응형




👉이전글에서 봤던 것처럼 RNN이라는 딥러닝 모델은 자연어 문장과 같은 시퀀스 데이터를 입력으로 받아 학습시킬 수 있도록 설계된 모델입니다. 이를 통해 자연어처리 분야에 딥러닝 모델이 활용될 수 있었습니다.


이러한 RNN 모델을 활용하여 자연어 기반의 분류 모델을 구현하고자 하는데,
구현에 앞서 딥러닝이 무엇인지 짚어보겠습니다.


딥러닝 개요




딥러닝 모델은 위 그림과 같이 표현될 수 있습니다.
위 구조를 이루고 있는 파란색 원을 퍼셉트론이라고 하는데,
입력층에서 입력으로 들어온 데이터가 다수의 퍼셉트론을 거쳐 사전 학습된대로 출력층에서 데이터를 출력하게 됩니다.


딥러닝이란?

딥러닝은 위 그림의 구조와 같은 심층신경망에 학습시키는 것을 가리키는 말입니다.



  • 심층신경망 : 위 그림과 같이 다수의 퍼셉트론으로 이루어진 은닉층이 2개 이상인 신경망


딥러닝의 등장

위 그림과 같이 단층퍼셉트론을 활용해도 AND 게이트 연산을 위한 직선의 선형함수를 찾으면 AND 게이트 구현이 가능했습니다.


하지만 위 그림의 XOR 게이트는 직선의 선형함수로는 구현이 불가능한 게이트이고,
XOR 연산을 위해 다수의 은닉층으로 구성된 심층신경망이 등장하게 됩니다. 그리고 이러한 심층신경망을 학습시키는 일련의 과정인 딥러닝이 대두됩니다.


심층신경망의 학습 (딥러닝)



학습과정

👉이전글에서 봤던 것처럼 머신러닝의 학습과정은 각 뉴런의 가중치 W를 찾아가는 과정입니다.
이러한 학습과정은 딥러닝에도 동일하게 적용됩니다. (퍼셉트론의 가중치 W를 찾아가는 과정)


  1. 학습데이터 입력 : 학습데이터가 입력되면 심층신경망을 이루는 각 퍼셉트론을 단계별로 거치게되고, 거칠 때마다 초기화된 가중치 W와 바이어스b를 기반으로 출력값이 계산되어 다음 층 퍼셉트론의 입력값으로 전달됩니다.
  2. 예측값과 실제값 비교 : 심층신경망을 통해 출력된 예측값과 실제값의 차이를 기반으로 하는 Loss Function을 통해 차이를 최소화하는 가중치W와 바이어스b를 찾게됩니다. 어떤 모델이냐에 따라 최적의 Loss Function이 달라집니다. (회귀모델은 MSE(평균제곱오차)가 최적이라고 함) (👉Cost Function 글 참고)
  3. Back Propagation : 출력층부터 은닉층을 역방향으로 진행하면서 실제값-예측값 오차 기반의 미분 값을 활용하여 가중치W와 바이어스b를 업데이트 합니다. 해당 과정이 반복되면서 Loss가 최소가 되는 지점을 찾게되면, 최적의 가중치W/바이어스b 값을 찾을 수 있습니다.
  4. Optimizer : 어떤 Optimizer를 사용하느냐에 따라 결정되는 Loss의 최솟값이 달라집니다. Optimizer의 성능이 좋을수록 정확한 최솟값을 찾을 수 있습니다. 아래 그림을 예시로 잘못된 Optimizer를 선정했을 경우, 로컬 미니멈을 최솟값으로 선정하게될 것입니다. Optimizer의 예로 기본적인 경사하강법(Gradient Descent)과 좀 더 응용된 Adam이 있습니다.



  • 수치기반 실제 학습과정 예시 (순전파->역전파)
    : 수치를 통해 실제 학습되는 과정에 대한 예시는 아래 링크를 참고하면 됩니다.
    https://wikidocs.net/37406


에포크/배치크기/이터레이션

아래 개념은 실제 모델에 학습을 시킬 때 모델의 성능을 좌우할 수 있는 파라미터입니다.

  1. 에포크 : 전체 학습데이터에 대해 순전파와 역전파 과정이 진행되는 단위입니다. 예를들어 50에포크는 전체데이터를 50번 학습한다는 의미입니다. 에포크가 너무 크거나 작으면 과적합이나 과소적합 현상이 발생할 수 있습니다.
  2. 배치크기 : 전체 데이터에서 몇 개 데이터 단위로 학습시킬지 결정하는 단위입니다.
  3. 이터레이션(step) : 전체 데이터를 모두 학습시키기 위해 배치크기 단위로 몇 번 학습 loop를 돌려야하는지 결정하는 단위입니다.


활성화 함수 (Activation Function)

  • 활성화함수란? 심층신경망 은닉층/출력층의 출력값을 결정하는 함수입니다. 이러한 매커니즘은 실제 뇌를 구성하는 신경 세포 뉴런이 전위가 일정치 이상이 되면 시냅스가 서로 화학적으로 연결되는 모습을 모방한 것입니다.


  • 사용이유 : 퍼셉트론의 출력 값은 보통 wx + b 함수의 형태로 선형함수의 출력 값으로 이루어짐 -> 인공신경망의 능력을 높이기 위해 은닉층을 계속 추가해줌 -> 활성화 함수 없이 선형함수의 출력 값이 중첩되기만 한다면 1개층의 은닉층을 사용하는 것이 여러층의 은닉층을 사용하는 것과 크게 차이가 없음 (ex. 0.20.20.2x 출력 값의 3개 은닉층은 0.004x 출력 값의 1개 은닉층과 차이가 없음) -> 비선형함수의 활성화 함수를 각 퍼셉트론의 연산에 활용하여 은닉층을 여러개 쌓았을 때 능력을 극대화시킬 수 있음 (각 퍼셉트론의 특성을 잘 살릴 수 있음)


활성화 함수 종류

  1. 시그모이드 함수 (Sigmoid function)

# 시그모이드 함수 그래프를 그리는 코드
def sigmoid(x):
    return 1/(1+np.exp(-x))
x = np.arange(-5.0, 5.0, 0.1)
y = sigmoid(x)

plt.plot(x, y)
plt.plot([0,0],[1.0,0.0], ':') # 가운데 점선 추가
plt.title('Sigmoid Function')
plt.show()

위 그림의 그래프는 시그모이드 함수의 그래프입니다.
양수 값이 클수록 1의 가까운 값을, 음수 값이 클수록 0에 가까운 값을 출력하게 됩니다.


  • Vanishing Gradient (기울기 소실)

인공신경망을 Back Propagation(역전파)을 통해 학습시킬 때, Vanishing Gradient (기울기 소실) 문제가 발생할 수 있습니다.
학습시키는 과정에서 시그모이드 활성화 함수를 미분하게 되는데, 미분 최댓값은 0.25로 작은 값이고,
역전파가 진행되면서 미분 최댓값(0.25) 이하의 값이 중첩되어 곱해지면 0으로 수렴하게 되어
기울기가 앞단으로 잘 전달되지 않게 됩니다.


기울기 소실 문제를 방지하기 위해 가중치 초기화나 배치 정규화, 층 정규화 등의 기법이 활용될 수 있습니다.


그래서 시그모이드 함수는 은닉층에서의 사용은 지양되고, 이진 분류를 위해 출력층에서 활용하게 됩니다.


  1. 하이퍼볼릭탄젠트 함수 (Hyperbolic tangent function)

x = np.arange(-5.0, 5.0, 0.1) # -5.0부터 5.0까지 0.1 간격 생성
y = np.tanh(x)

plt.plot(x, y)
plt.plot([0,0],[1.0,-1.0], ':')
plt.axhline(y=0, color='orange', linestyle='--')
plt.title('Tanh Function')
plt.show()

하이퍼볼릭탄젠트 함수는 미분했을 때의 최댓값이 1로
은닉층에서 시그모이드 함수보다는 선호되는 함수입니다.


  1. 렐루 함수 (ReLU)

def relu(x):
    return np.maximum(0, x)

x = np.arange(-5.0, 5.0, 0.1)
y = relu(x)

plt.plot(x, y)
plt.plot([0,0],[5.0,0.0], ':')
plt.title('Relu Function')
plt.show()

렐루 함수는 음수는 0을 출력하고, 양수는 입력값 그대로 반환하는 함수입니다.
그리고 양수일 때의 기울기는 항상 1이라서 깊은 신경망의 은닉층에서 시그모이드 함수보다 훨씬 더 잘 작동합니다.
또한, 단순 임계값을 반환하는 연산이라서, 연산 속도도 빠릅니다.


그러나 음수일 때 기울기는 항상 0입니다. 그래서 기울기가 0인 경우는 퍼셉트론이 죽게되어 다시 회생하는 것이 매우 어렵게 되는 죽은 렐루(dying ReLU) 현상이 발생할 수 있습니다.


  1. 리키 렐루 (Leaky ReLU)

a = 0.1

def leaky_relu(x):
    return np.maximum(a*x, x)

x = np.arange(-5.0, 5.0, 0.1)
y = leaky_relu(x)

plt.plot(x, y)
plt.plot([0,0],[5.0,0.0], ':')
plt.title('Leaky ReLU Function')
plt.show()

리키 렐루 함수는 죽은 렐루 현상을 보완하기 위해 등장한 함수 중 하나입니다.
입력 값이 음수일 경우에 0이 아니라 매우 작은수를 반환하도록 하여 0이 아닌 아주 작은 값의 기울기를 갖게됩니다.
이를 통해 ReLU는 죽지 않습니다.


Reference

반응형

'개발 > AI' 카테고리의 다른 글

[LLM] LLM 발전기  (2) 2025.01.05
[AI] pandas/sklearn을 활용한 머신러닝 모델링  (0) 2024.04.12
[AI] pandas를 활용한 데이터 핸들링 및 전처리  (2) 2024.04.10
KT AI 해커톤 회고 (2)  (2) 2023.11.02
KT AI 해커톤 회고 (1)  (2) 2023.10.27

+ Recent posts