> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cloudthinker.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Azure

> 멀티 클라우드 운영, 비용 분석, 컴플라이언스 모니터링을 위해 Microsoft Azure를 CloudThinker에 연결하세요

Azure 구독을 연결하여 CloudThinker 에이전트가 Microsoft Azure 전반에서 비용을 분석하고, 컴플라이언스를 감사하고, 인프라를 관리할 수 있도록 합니다.

Azure는 **서비스 주체** (앱 등록 + 클라이언트 시크릿 + 테넌트 ID)로 인증합니다. 주체의 역할 할당이 각 에이전트가 읽을 수 있는 범위를 결정합니다.

***

## 사전 요구 사항

* Owner 또는 User Access Administrator 권한이 있는 Azure 구독.
* Azure Active Directory에서 앱 등록을 생성할 권한.
* 대상 구독에서 역할을 할당할 권한.

<Info>
  Reader 역할은 비용 분석, 보안 감사, 리소스 검사에 충분합니다. 에이전트가 Azure 리소스에 대한 작업을 수행해야 하는 경우에만 쓰기 수준 역할을 부여하세요.
</Info>

***

## 설정

<Steps>
  <Step title="애플리케이션 등록">
    [Azure 포털](https://portal.azure.com/)로 이동하여 **Azure Active Directory → App registrations → New registration**으로 이동하세요:

    * **Name**: `CloudThinker-ReadOnly`
    * **Supported account types**: 이 조직 디렉터리의 계정만
    * **Register** 클릭
  </Step>

  <Step title="애플리케이션 세부 정보 기록">
    앱 개요에서 다음 값을 복사하여 저장하세요:

    * **Application (client) ID**
    * **Directory (tenant) ID**
  </Step>

  <Step title="클라이언트 시크릿 생성">
    앱 등록에서 **Certificates & secrets → New client secret**으로 이동하세요. 설명을 추가하고 만료 기간을 설정하여 (권장: 12개월) **Add**를 클릭하세요. 시크릿 값을 즉시 복사하세요 — 다시 표시되지 않습니다.
  </Step>

  <Step title="Reader 역할 할당">
    **Subscriptions → Your Subscription → Access control (IAM) → Add → Add role assignment**로 이동하세요. **Reader** 역할을 선택하고 앱 등록을 검색하여 선택한 후 **Save**를 클릭하세요.
  </Step>

  <Step title="CloudThinker에 연결 추가">
    **Connections → Azure**로 이동하여 다음을 입력하세요:

    * **Client ID** (Application ID)
    * **Client Secret** (복사한 시크릿 값)
    * **Tenant ID** (Directory ID)
    * **Subscription ID**

    **Connect**를 클릭하세요. CloudThinker가 자격 증명을 확인하고 **Connected** 상태를 표시합니다.
  </Step>
</Steps>

<Warning>
  생성 직후 클라이언트 시크릿을 복사하세요. Azure는 다시 표시하지 않으며, 분실 시 새 시크릿을 생성해야 합니다.
</Warning>

### 멀티 구독 설정

여러 Azure 구독이 있는 조직의 경우:

<Steps>
  <Step title="관리 그룹 접근 사용">
    관리 그룹 수준에서 Reader 역할을 할당하여 범위 내 모든 구독을 커버하세요.
  </Step>

  <Step title="Cost Management 접근 추가">
    구독 간 비용 분석을 위해 청구 계정 수준에서 **Cost Management Reader**를 부여하세요.
  </Step>

  <Step title="CloudThinker에서 설정">
    연결 설정에서 모든 구독 ID를 추가하거나 "All Subscriptions"를 선택하세요.
  </Step>
</Steps>

***

## 연결 세부 정보

| 필드                  | 설명                                 | 예시                                     |
| ------------------- | ---------------------------------- | -------------------------------------- |
| **Client ID**       | 앱 등록의 Application (client) ID      | `00000000-0000-0000-0000-000000000000` |
| **Client Secret**   | Certificates & secrets에서 생성한 시크릿 값 | —                                      |
| **Tenant ID**       | Azure AD의 Directory (tenant) ID    | `00000000-0000-0000-0000-000000000000` |
| **Subscription ID** | 연결할 Azure 구독 ID                    | `00000000-0000-0000-0000-000000000000` |

***

## 필요 권한

### 최소 (읽기 전용 분석)

```
Reader                          # 리소스에 대한 기본 읽기 접근
Cost Management Reader          # 비용 및 청구 데이터
```

### 권장 (전체 분석)

```
# 위의 모든 권한에 추가:
Security Reader                 # Security Center 접근
Log Analytics Reader            # Log Analytics 워크스페이스 접근
Monitoring Reader               # Azure Monitor 접근
```

<Tip>
  Contributor 대신 Reader 역할을 사용하세요. CloudThinker의 읽기 작업은 쓰기 접근이 필요하지 않습니다. 클라이언트 시크릿에 대한 교체 일정을 설정하고 "Never" 만료 옵션을 피하세요.
</Tip>

***

## 에이전트 기능

연결되면 에이전트가 Azure 리소스를 분석하고 최적화할 수 있습니다.

| 에이전트                                  | Azure 기능                                             |
| ------------------------------------- | ---------------------------------------------------- |
| **[Alex](/ko/guide/agents/alex)**     | 비용 분석, VM 적정 크기 조정, Reserved Instance 권장 사항, 리소스 최적화 |
| **[Oliver](/ko/guide/agents/oliver)** | Security Center 결과, Azure AD 감사, 컴플라이언스 검사, 정책 위반    |
| **[Tony](/ko/guide/agents/tony)**     | SQL Database 성능, Cosmos DB 최적화, PostgreSQL 튜닝        |
| **[Kai](/ko/guide/agents/kai)**       | AKS 클러스터 관리, 컨테이너 최적화, 워크로드 분석                       |

### 연결 검증

```text theme={null}
@alex run an Azure account check and list the connected subscriptions and resource groups
```

### 예시 프롬프트

```text theme={null}
@alex analyze Azure VM costs over the last 30 days and #recommend right-sizing opportunities
@oliver audit Azure Security Center findings and flag high-severity policy violations
@kai check AKS cluster health and #report any failing pods or resource pressure
```

***

## 문제 해결

<Accordion title="인증 실패">
  테넌트 ID, 클라이언트 ID, 클라이언트 시크릿이 올바른지 확인하세요. 클라이언트 시크릿이 만료되지 않았는지, 앱 등록이 올바른 Azure AD 테넌트에 있는지 확인하세요. 조건부 접근 정책이 인증을 차단하고 있지 않은지 확인하세요.
</Accordion>

<Accordion title="클라이언트 시크릿 만료">
  **Azure AD → App registrations → Your app → Certificates & secrets**로 이동하여 새 클라이언트 시크릿을 생성하고 CloudThinker 연결 설정에서 시크릿을 업데이트하세요.
</Accordion>

<Accordion title="리소스 없음">
  Reader 역할이 올바른 구독에 할당되어 있는지 확인하세요. 리소스가 다른 구독에 있는지 확인하고 앱이 필요한 모든 구독에 접근할 수 있는지 확인하세요.
</Accordion>

<Accordion title="비용 데이터 없음">
  **Cost Management Reader** 역할이 할당되어 있는지 확인하세요. Cost Management + Billing 접근을 확인하고 해당되는 경우 EA/MCA 청구 계정 접근이 설정되어 있는지 확인하세요.
</Accordion>

***

## 보안

* **최소 권한** — 에이전트가 사용 사례에 필요한 권한만 부여하세요. 읽기 전용으로 시작한 후 필요에 따라 확장하세요.
* **기본 읽기 전용** — 에이전트가 이 연결을 통해 변경 작업을 수행하게 할 것이 아니라면 읽기 전용 자격증명을 사용하세요.
* **자격증명 교체** — 정기 일정에 따라 키와 토큰을 교체하세요. 연결을 업데이트하면 CloudThinker가 새 값을 자동으로 반영합니다.
* **오프보딩 시 취소** — 연결을 삭제하거나 팀원이 퇴사할 때 프로바이더에서 자격증명을 제거하세요.

- **시크릿 만료 설정** — 항상 클라이언트 시크릿에 만료 기간을 설정하고 ("Never" 피하기), 만료 전 교체를 위한 캘린더 알림을 설정하세요.
- **Reader 역할 사용** — Contributor 대신 Reader를 할당하세요. CloudThinker의 읽기 작업은 쓰기 접근이 필요하지 않습니다.

***

## 관련 문서

<CardGroup cols={2}>
  <Card title="AWS 연결" icon="https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/aws.svg?fit=max&auto=format&n=aLd-ttc-SCW-aFky&q=85&s=45d526a3e9345214c0345f277da2e829" href="/ko/guide/connections/aws" width="24" height="24" data-path="images/icons/aws.svg">
    Amazon Web Services 연결
  </Card>

  <Card title="Oliver 에이전트" icon="shield-check" href="/ko/guide/agents/oliver">
    Azure 컴플라이언스를 위한 보안 중심 에이전트
  </Card>
</CardGroup>
