온-프레미스 JavaScript 앱에서 Azure 리소스에 인증
Azure 외부(예: 온-프레미스 또는 타사 데이터 센터)에서 실행되는 앱은 Azure 리소스에 액세스할 때 애플리케이션 서비스 주체를 사용하여 Azure에 인증해야 합니다. 애플리케이션 서비스 주체 개체는 Azure에서 앱 등록 프로세스를 사용하여 만들어집니다. 애플리케이션 서비스 주체가 만들어지면 앱에 대한 클라이언트 ID 및 클라이언트 암호가 생성됩니다. JavaScript용 Azure SDK에서 환경 변수를 사용하여 런타임에 Azure에 앱을 인증하도록 클라이언트 ID, 클라이언트 암호 및 테넌트 ID를 환경 변수에 저장합니다.
앱이 실행 중인 각 환경(예: 테스트, 스테이지, 프로덕션)에 대해 다른 앱 등록을 만들어야 합니다. 이렇게 하면 각 서비스 주체에 대해 환경별 리소스 권한을 구성하고 한 환경에 배포된 앱이 다른 환경의 일부인 Azure 리소스와 통신하지 않도록 할 수 있습니다.
1 - Azure에서 애플리케이션 등록
Azure Portal 또는 Azure CLI를 사용하여 Azure에서 앱을 등록할 수 있습니다.
Azure Portal에 로그인하고 다음 단계를 따릅니다.
2 - 애플리케이션 서비스 주체에 역할 할당
다음으로, 어떤 리소스에 대해 앱에 필요한 역할(권한)을 결정하고 해당 역할을 앱에 할당해야 합니다. 역할은 리소스, 리소스 그룹 또는 구독 범위에서 역할을 할당할 수 있습니다. 이 예에서는 대부분의 애플리케이션이 모든 Azure 리소스를 단일 리소스 그룹으로 그룹화하므로 리소스 그룹 범위에서 서비스 주체에 대한 역할을 할당하는 방법을 보여 줍니다.
3 - 애플리케이션에 대한 환경 변수 구성
JavaScript 앱을 실행하는 프로세스에 대한 환경 변수 및 AZURE_CLIENT_SECRET
환경 변수를 설정AZURE_CLIENT_ID
AZURE_TENANT_ID
하여 런타임에 앱에서 애플리케이션 서비스 주체 자격 증명을 사용할 수 있도록 해야 합니다. 개체는 DefaultAzureCredential
이러한 환경 변수에서 서비스 주체 정보를 찾습니다.
AZURE_CLIENT_ID=<value>
AZURE_TENANT_ID=<value>
AZURE_CLIENT_SECRET=<value>
4 - 애플리케이션에 DefaultAzureCredential 구현
Azure에 Azure SDK 클라이언트 개체를 인증하려면 애플리케이션이 @azure/ID 패키지의 클래스를 사용해야 DefaultAzureCredential
합니다.
먼저 애플리케이션에 @azure/ID 패키지를 추가합니다.
npm install @azure/identity
다음으로, 앱에서 Azure SDK 클라이언트 개체를 만드는 JavaScript 코드의 경우 다음을 수행합니다.
- 모듈에서
DefaultAzureCredential
클래스를@azure/identity
가져옵니다. DefaultAzureCredential
개체를 만듭니다.- 개체를
DefaultAzureCredential
Azure SDK 클라이언트 개체 생성자에 전달합니다.
이 예제는 다음 코드 세그먼트에 나와 있습니다.
// connect-with-default-azure-credential.js
import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
import 'dotenv/config'
const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!accountName) throw Error('Azure Storage accountName not found');
const blobServiceClient = new BlobServiceClient(
`https://${accountName}.blob.core.windows.net`,
new DefaultAzureCredential()
);
위의 코드가 개체를 DefaultAzureCredential
인스턴스화할 때 환경 변수AZURE_SUBSCRIPTION_ID
를 AZURE_TENANT_ID
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
읽고 애플리케이션 서비스 주체 정보를 사용하여 Azure에 연결합니다. DefaultAzureCredential