

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Azure 리소스 연결
<a name="connecting-azure-connecting-azure-resources"></a>

Azure 리소스 통합을 통해 AWS DevOps Agent는 인시던트 조사 중에 Azure 구독의 리소스를 검색하고 조사할 수 있습니다. 에이전트는 리소스 검색에 Azure 리소스 그래프를 사용하며 Azure 환경 전반의 지표, 로그 및 구성 데이터에 액세스할 수 있습니다.

이 통합은 AWS 계정 수준에서 Azure를 등록한 다음 특정 Azure 구독을 개별 에이전트 스페이스와 연결하는 2단계 프로세스를 따릅니다.

## 사전 조건
<a name="prerequisites"></a>

Azure 리소스를 연결하기 전에 다음이 있는지 확인합니다.
+  AWS DevOps 에이전트 콘솔에 대한 액세스
+ 대상 구독에 액세스할 수 있는 Azure 계정
+ 관리자 동의 방법의 경우: Microsoft Entra ID에서 관리자 동의를 수행할 권한이 있는 계정
+ 앱 등록 방법의 경우: 페더레이션 자격 증명을 구성할 수 있는 권한이 있는 Entra 애플리케이션 및 AWS 계정에서 활성화된 [아웃바운드 자격 증명 페더레이션](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-federation.html) 

**참고:** 에이전트 스페이스 내에서 등록을 시작할 수도 있습니다. **보조 소스**로 이동하여 **추가**를 클릭하고 **Azure**를 선택합니다. Azure Cloud가 아직 등록되지 않은 경우 콘솔이 먼저 등록을 안내합니다.

## 관리자 동의를 통한 Azure 리소스 등록
<a name="registering-azure-resources-via-admin-consent"></a>

관리자 동의 메서드는 AWS DevOps 에이전트 관리형 애플리케이션과 함께 동의 기반 흐름을 사용합니다.

### 1단계: 등록 시작
<a name="step-1-start-the-registration"></a>

1.  AWS Management Console에 로그인하고 AWS DevOps 에이전트 콘솔로 이동합니다.

1. **기능 공급자** 페이지로 이동

1. **Azure 클라우드** 섹션을 찾아 **등록**을 클릭합니다.

1. **관리자 동의** 등록 방법 선택

### 2단계: 관리자 동의 완료
<a name="step-2-complete-admin-consent"></a>

1. 요청 중인 권한 검토

1. 계속하려면 클릭 - Microsoft Entra 관리자 동의 페이지로 리디렉션됩니다.

1. 관리자 동의를 수행할 권한이 있는 사용자 보안 주체 계정으로 로그인

1.  AWS DevOps 에이전트 애플리케이션 검토 및 동의 부여

### 3단계: 사용자 권한 부여 완료
<a name="step-3-complete-user-authorization"></a>

1. 관리자 동의 후 권한 있는 테넌트의 멤버 자격 증명을 확인하기 위한 사용자 권한 부여 메시지가 표시됩니다.

1. 동일한 Azure 테넌트에 속한 계정으로 로그인

1. 권한 부여 후 성공 상태의 AWS DevOps 에이전트 콘솔로 다시 리디렉션됩니다.

### 4단계: 역할 할당
<a name="step-4-assign-roles"></a>

아래 [Azure 역할 할당](#assigning-azure-roles)을 참조하세요. 멤버를 선택할 때 **AWS DevOps 에이전트**를 검색합니다.

## 앱 등록을 통해 Azure 리소스 등록
<a name="registering-azure-resources-via-app-registration"></a>

앱 등록 메서드는 페더레이션 자격 증명이 있는 자체 Entra 애플리케이션을 사용합니다.

### 1단계: 등록 시작
<a name="step-1-start-the-registration"></a>

1.  AWS DevOps 에이전트 콘솔에서 **기능 공급자** 페이지로 이동합니다.

1. **Azure 클라우드** 섹션을 찾아 **등록**을 클릭합니다.

1. **앱 등록** 방법 선택

### 2단계: Entra 애플리케이션 생성 및 구성
<a name="step-2-create-and-configure-your-entra-application"></a>

콘솔에 표시된 지침에 따라 다음을 수행합니다.

1.  AWS 계정에서 아웃바운드 자격 증명 연동 활성화(IAM 콘솔에서 **계정 설정** → **아웃바운드 자격 증명 연동**으로 이동)

1. Microsoft Entra ID에서 Entra 애플리케이션을 생성하거나 기존 애플리케이션을 사용합니다.

1. 애플리케이션에서 페더레이션 자격 증명 구성

### 3단계: 등록 세부 정보 제공
<a name="step-3-provide-registration-details"></a>

등록 양식에 다음을 입력합니다.
+ **테넌트 ID** - Azure 테넌트 식별자
+ **테넌트 이름** - 테넌트의 표시 이름입니다.
+ **클라이언트 ID** - 생성한 Entra 애플리케이션의 애플리케이션(클라이언트) ID입니다.
+ **대상** - 페더레이션 자격 증명의 대상 식별자입니다.

### 4단계: IAM 역할 생성
<a name="step-4-create-the-iam-role"></a>

콘솔을 통해 등록을 제출하면 IAM 역할이 자동으로 생성됩니다. 이를 통해 AWS DevOps 에이전트는 자격 증명을 수임하고를 호출할 수 있습니다`sts:GetWebIdentityToken`.

### 5단계: 역할 할당
<a name="step-5-assign-roles"></a>

아래 [Azure 역할 할당](#assigning-azure-roles)을 참조하세요. 멤버를 선택할 때 생성한 Entra 애플리케이션을 검색합니다.

### 6단계: 등록 완료
<a name="step-6-complete-the-registration"></a>

1.  AWS DevOps 에이전트 콘솔에서 구성 확인

1. **제출**을 클릭하여 등록을 완료합니다.

## Azure 역할 할당
<a name="assigning-azure-roles"></a>

등록 후 애플리케이션에 Azure 구독에 대한 읽기 액세스 권한을 부여합니다. 이 단계는 관리자 동의 및 앱 등록 방법 모두에서 동일합니다.

1. Azure 포털에서 대상 구독으로 이동합니다.

1. **액세스 제어(IAM)**로 이동

1. **추가** > **역할 할당 추가**를 클릭합니다.

1. **독자** 역할을 선택하고 **다음을** 클릭합니다.

1. **멤버 선택을** 클릭하고 애플리케이션(관리자 동의용 **AWS DevOps 에이전트** 또는 앱 등록용 자체 Entra 애플리케이션)을 검색합니다.

1. 애플리케이션을 선택하고 **검토 \$1 할당**을 클릭합니다.

1. (선택 사항) 에이전트가 Azure Kubernetes Service(AKS) 클러스터에 액세스할 수 있도록 하려면 다음 AKS 액세스 설정을 완료합니다.

**보안 요구 사항:** 서비스 보안 주체에는 **리더** 역할(및 선택적으로 아래 나열된 AKS 읽기 전용 역할)만 할당해야 합니다. 리더 역할은 에이전트를 읽기 전용 작업으로 제한하고 간접 프롬프트 주입 공격의 영향을 제한하는 보안 경계 역할을 합니다. 쓰기 또는 작업 권한이 있는 역할을 할당하면 프롬프트 주입의 폭발 반경이 크게 증가하여 Azure 리소스가 손상될 수 있습니다. AWS DevOps Agent는 읽기 작업만 수행합니다. 에이전트는 Azure 리소스를 수정, 생성 또는 삭제하지 않습니다.

### AKS 액세스 설정(선택 사항)
<a name="aks-access-setup-optional"></a>

#### 1단계: Azure Resource Manager(ARM) 수준 액세스
<a name="step-1-azure-resource-manager-arm-level-access"></a>

**Azure Kubernetes 서비스 클러스터 사용자 역할을** 애플리케이션에 할당합니다.

Azure 포털에서 **구독** → 구독 선택 → **액세스 제어(IAM)** → **역할 할당 추가** → **Azure Kubernetes 서비스 클러스터 사용자 역할** 선택 → 애플리케이션에 할당(관리자 동의용 **AWS DevOps 에이전트** 또는 앱 등록용 자체 Entra 애플리케이션)으로 이동합니다.

여기에는 구독의 모든 AKS 클러스터가 포함됩니다. 특정 클러스터로 범위를 지정하려면 대신 리소스 그룹 또는 개별 클러스터 수준에서를 할당합니다.

#### 2단계: Kubernetes API 액세스
<a name="step-2-kubernetes-api-access"></a>

클러스터의 인증 구성을 기반으로 한 가지 옵션을 선택합니다.

**옵션 A: Kubernetes용 Azure 역할 기반 액세스 제어(RBAC)(권장)**

1. 아직 활성화되지 않은 경우 클러스터에서 Azure RBAC 활성화: Azure 포털 → AKS 클러스터 → **설정** → **보안 구성** → **인증 및 권한** 부여 → **Azure RBAC** 선택

1. 읽기 전용 역할 할당: Azure 포털 → **구독** → 구독 선택 → **액세스 제어(IAM)** → **역할 할당 추가** → **Azure Kubernetes Service RBAC Reader** 선택 → 애플리케이션에 할당

여기에는 구독의 모든 AKS 클러스터가 포함됩니다.

**옵션 B: Azure Active Directory(Azure AD) \$1 Kubernetes RBAC**

클러스터가 이미 기본 Azure AD 인증 구성을 사용하고 Azure RBAC를 활성화하지 않으려는 경우이 옵션을 사용합니다. 이를 위해서는 클러스터당 `kubectl` 설정이 필요합니다.

1. 다음 매니페스트를 로 저장합니다`devops-agent-reader.yaml`.

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: devops-agent-reader
rules:
  - apiGroups: [""]
    resources: ["namespaces", "pods", "pods/log", "services", "events", "nodes"]
    verbs: ["get", "list"]
  - apiGroups: ["apps"]
    resources: ["deployments", "replicasets", "statefulsets", "daemonsets"]
    verbs: ["get", "list"]
  - apiGroups: ["metrics.k8s.io"]
    resources: ["pods", "nodes"]
    verbs: ["get", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: devops-agent-reader-binding
subjects:
  - kind: User
    name: "<SERVICE_PRINCIPAL_OBJECT_ID>"
    apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: devops-agent-reader
  apiGroup: rbac.authorization.k8s.io
```

1. 를 서비스 보안 주체의 객체 ID`<SERVICE_PRINCIPAL_OBJECT_ID>`로 바꿉니다. 이를 찾으려면 Azure 포털 → Entra ID → 엔터프라이즈 애플리케이션 → 애플리케이션 이름(관리자 동의용 **AWS DevOps 에이전트** 또는 앱 등록용 자체 Entra 애플리케이션)을 검색합니다.

1. 각 클러스터에 적용:

```
az aks get-credentials --resource-group <rg> --name <cluster-name>
kubectl apply -f devops-agent-reader.yaml
```

**참고:** 로컬 계정만 사용하는 클러스터(Azure AD 제외)는 지원되지 않습니다. 이 기능을 사용하려면 클러스터에서 Azure AD 통합을 활성화하는 것이 좋습니다.

### 최소 권한 사용자 지정 역할(선택 사항)
<a name="least-privileged-custom-role-optional"></a>

더 엄격한 액세스 제어를 위해 광범위한 리더 역할 대신 AWS DevOps 에이전트가 사용하는 리소스 공급자로만 범위가 지정된 사용자 지정 Azure 역할을 생성할 수 있습니다.

```
{
  "Name": "AWS DevOps Agent - Azure Reader",
  "Description": "Least-privilege read-only access for AWS DevOps Agent incident investigations.",
  "Actions": [
    "Microsoft.AlertsManagement/*/read",
    "Microsoft.Compute/*/read",
    "Microsoft.ContainerRegistry/*/read",
    "Microsoft.ContainerService/*/read",
    "Microsoft.ContainerService/managedClusters/commandResults/read",
    "Microsoft.DocumentDB/*/read",
    "Microsoft.Insights/*/read",
    "Microsoft.KeyVault/vaults/read",
    "Microsoft.ManagedIdentity/*/read",
    "Microsoft.Monitor/*/read",
    "Microsoft.Network/*/read",
    "Microsoft.OperationalInsights/*/read",
    "Microsoft.ResourceGraph/resources/read",
    "Microsoft.ResourceHealth/*/read",
    "Microsoft.Resources/*/read",
    "Microsoft.Sql/*/read",
    "Microsoft.Storage/*/read",
    "Microsoft.Web/*/read"
  ],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/subscriptions/{your-subscription-id}"
  ]
}
```

## 에이전트 스페이스와 구독 연결
<a name="associating-a-subscription-with-an-agent-space"></a>

계정 수준에서 Azure를 등록한 후 특정 구독을 에이전트 스페이스와 연결합니다.

1.  AWS DevOps 에이전트 콘솔에서 에이전트 스페이스를 선택합니다.

1. **기능** 탭으로 이동

1. **보조 소스** 섹션에서 **추가**를 클릭합니다.

1. **Azure** 선택

1. 연결할 Azure **구독의 구독 ID**를 제공합니다.

1. **추가**를 클릭하여 연결을 완료합니다.

여러 구독을 동일한 에이전트 스페이스와 연결하여 Azure 환경 전체에서 에이전트에게 가시성을 제공할 수 있습니다.

## Azure 리소스 연결 관리
<a name="managing-azure-resources-connections"></a>
+ **연결된 구독 보기 **- **기능** 탭의 **보조 소스** 섹션에는 연결된 모든 Azure 구독이 나열됩니다.
+ **구독 제거** - 에이전트 스페이스에서 구독을 연결 해제하려면 **보조 소스** 목록에서 구독을 선택하고 **제거**를 클릭합니다. 이는 계정 수준 등록에는 영향을 주지 않습니다.
+ **등록 제거** - Azure 클라우드 등록을 완전히 제거하려면 **기능 공급자** 페이지로 이동하여 등록을 삭제합니다. 먼저 모든 에이전트 스페이스 연결을 제거해야 합니다.