

버전 4(V4) AWS SDK for .NET 가 릴리스되었습니다.

변경 사항 해제 및 애플리케이션 마이그레이션에 대한 자세한 내용은 [마이그레이션 주제를](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html) 참조하세요.

 [https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

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

# 레거시 보안 인증 사용
<a name="net-dg-legacy-creds"></a>

이 섹션의 주제에서는 AWS IAM Identity Center를 사용하지 않고 장기 또는 단기 보안 인증 정보를 사용하는 방법에 대한 정보를 제공합니다.

**주의**  
보안 위험을 방지하려면 목적별 소프트웨어를 개발하거나 실제 데이터로 작업할 때 IAM 사용자를 인증에 사용하지 마세요. 대신 [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)과 같은 보안 인증 공급자를 통한 페더레이션을 사용하십시오.

**참고**  
이 주제의 정보는 단기 또는 장기 보안 인증 정보를 수동으로 획득하고 관리해야 하는 상황을 위한 것입니다. 단기 및 장기 보안 인증 정보에 대한 자세한 내용은 **AWS 및 도구 참조 가이드의 [다른 인증 방법](https://docs.aws.amazon.com/sdkref/latest/guide/access-users.html)을 참조하세요.  
보안 모범 사례를 보려면에 설명된 AWS IAM Identity Center대로를 사용합니다[를 사용하여 인증 AWS](creds-idc.md).

## 보안 인증에 대한 중요 경고 및 지침
<a name="net-dg-config-creds-warnings-and-guidelines"></a>

**보안 인증에 대한 경고**
+ 계정의 루트 자격 증명을 사용하여 AWS 리소스에 액세스***하지 마십시오***. 이 보안 인증은 계정 액세스에 제한이 없고 취소하기 어렵습니다.
+ ***금지 사항.*** 애플리케이션 파일에 리터럴 액세스 키나 보안 인증 정보를 넣으면 안 됩니다. 이를 어기는 경우, 예를 들어 프로젝트를 퍼블릭 리포지토리에 업로드하면 뜻하지 않게 보안 인증이 노출될 위험이 있습니다.
+ ***금지 사항.*** 프로젝트 영역에 보안 인증이 포함된 파일을 포함하지 마세요.
+ 공유 AWS `credentials` 파일에 저장된 모든 자격 증명은 일반 텍스트로 저장됩니다.

**보안 인증 정보를 안전하게 관리하기 위한 추가 지침**

자격 AWS 증명을 안전하게 관리하는 방법에 대한 일반적인 설명은의 [AWS 보안 자격 증명](https://docs.aws.amazon.com/general/latest/gr/Welcome.html#aws-security-credentials)[AWS 일반 참조](https://docs.aws.amazon.com/general/latest/gr/)과 [IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/)의 [보안 모범 사례 및 사용 사례를](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html) 참조하세요. 해당 설명과 더불어 다음 사항을 고려하세요.
+  AWS 루트 사용자 보안 인증 정보를 사용하는 대신 IAM Identity Center에 사용자 등 추가 사용자를 만들고 해당 보안 인증 정보를 사용합니다. 다른 사용자의 보안 인증 정보는 필요한 경우 또는 일시적인 경우 해지할 수 있습니다. 또한 각 사용자에게 특정 리소스 및 작업에만 액세스할 수 있도록 정책을 적용하여 최소 권한 권한을 유지할 수 있습니다.
+ Amazon EC2 Container Service(Amazon ECS) 작업에 [작업용 IAM 역할](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)을 사용하세요.
+ Amazon EC2 인스턴스에서 실행 중인 애플리케이션에 [IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)을 사용하십시오.
+ 조직 외부의 사용자들이 쓸 수 있는 애플리케이션에 대해서는 [임시 자격 증명](creds-assign.md#net-dg-config-creds-assign-role) 또는 환경 변수를 사용하십시오.

**Topics**
+ [보안 인증에 대한 중요 경고 및 지침](#net-dg-config-creds-warnings-and-guidelines)
+ [공유 AWS 자격 증명 파일 사용](creds-file.md)
+ [SDK 스토어 사용(Windows만 해당)](sdk-store.md)

# 공유 AWS 자격 증명 파일 사용
<a name="creds-file"></a>

([보안 인증에 대한 중요 경고 및 지침](net-dg-legacy-creds.md#net-dg-config-creds-warnings-and-guidelines)을 반드시 검토하세요.)

애플리케이션에 보안 인증을 제공하는 한 가지 방법은 *공유 AWS 보안 인증 파일*에 프로필을 만든 다음 해당 프로필에 보안 인증을 저장하는 것입니다. 이 파일은 다른 AWS SDKs. 또한 Visual [Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/)[AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/), [JetBrains](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/) [AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/)및 [VS Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/)용 , 및 AWS 툴킷에서도 사용할 수 있습니다.

**주의**  
보안 위험을 방지하려면 목적별 소프트웨어를 개발하거나 실제 데이터로 작업할 때 IAM 사용자를 인증에 사용하지 마세요. 대신 [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)과 같은 보안 인증 공급자를 통한 페더레이션을 사용하십시오.

**참고**  
이 주제의 정보는 단기 또는 장기 보안 인증 정보를 수동으로 획득하고 관리해야 하는 상황을 위한 것입니다. 단기 및 장기 보안 인증 정보에 대한 자세한 내용은 **AWS 및 도구 참조 가이드의 [다른 인증 방법](https://docs.aws.amazon.com/sdkref/latest/guide/access-users.html)을 참조하세요.  
보안 모범 사례를 보려면에 설명된 AWS IAM Identity Center대로를 사용합니다[를 사용하여 인증 AWS](creds-idc.md).

## 일반 정보
<a name="creds-file-general-info"></a>

기본적으로 공유 AWS 자격 증명 파일은 홈 `.aws` 디렉터리 내의 디렉터리에 위치하며 이름이 , `credentials`즉 `~/.aws/credentials` (Linux 또는 macOS) 또는 `%USERPROFILE%\.aws\credentials` (Windows)입니다. 대체 위치에 대한 자세한 내용은 *[AWS SDK 및 도구 참조 가이드](https://docs.aws.amazon.com/sdkref/latest/guide/overview.html)*의 [공유 파일의 위치](https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html)를 참조하세요. [애플리케이션에서 자격 증명 및 프로필에 액세스](creds-locate.md) 섹션도 참조하세요.

공유 AWS 자격 증명 파일은 일반 텍스트 파일이며 특정 형식을 따릅니다. 자격 AWS 증명 파일 형식에 대한 자세한 내용은 SDK 및 도구 참조 안내서[의 자격 증명 파일 형식을](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-creds) 참조하세요. *AWS SDKs *

여러 가지 방법으로 공유 AWS 자격 증명 파일의 프로파일을 관리할 수 있습니다.
+ 텍스트 편집기를 사용하여 공유 AWS 자격 증명 파일을 생성하고 업데이트합니다.
+ 이 주제의 뒷부분에서 볼 수 있듯이 AWS SDK for .NET API의 [Amazon.Runtime.CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 네임스페이스를 사용합니다.
+ [AWS Tools for PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html) 및 [Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/credentials.html), [JetBrains](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/setup-credentials.html) 및 VS Code용 AWS 툴킷에 명령과 절차를 사용합니다. [https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-credentials.html](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-credentials.html) 
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) 명령을 사용합니다(예: `aws configure set aws_access_key_id` 및 `aws configure set aws_secret_access_key`).

## 프로필 관리의 예
<a name="creds-file-examples"></a>

다음 섹션에서는 공유 AWS 자격 증명 파일의 프로필 예를 보여줍니다. 일부 예제는 앞서 설명한 보안 인증 관리 방법 중 하나를 통해 얻을 수 있는 결과를 보여줍니다. 다른 예제는 특정 방법을 사용하는 방법을 보여줍니다.

### 기본 프로필
<a name="creds-file-default"></a>

공유 AWS 자격 증명 파일에는 거의 항상 *이름이 default*인 프로필이 있습니다. 여기서는 다른 프로필이 정의되지 않은 경우 자격 증명을 AWS SDK for .NET 찾습니다.

`[default]` 프로필은 일반적으로 다음과 같습니다.

```
[default]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```

### 프로그래밍 방식으로 프로필 생성
<a name="creds-file-create-programmatically"></a>

이 예제에서는 프로파일을 생성하고 프로그래밍 방식으로 공유 AWS 자격 증명 파일에 저장하는 방법을 보여줍니다. [CredentialProfileOptions](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TCredentialProfileOptions.html), [CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TCredentialProfile.html) 및 [SharedCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TSharedCredentialsFile.html)과 같은 [Amazon.Runtime.CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 네임스페이스의 클래스를 사용합니다.

```
using Amazon.Runtime.CredentialManagement;
...

// Do not include credentials in your code.
WriteProfile("my_new_profile", SecurelyStoredKeyID, SecurelyStoredSecretAccessKey);
...

void WriteProfile(string profileName, string keyId, string secret)
{
    Console.WriteLine($"Create the [{profileName}] profile...");
    var options = new CredentialProfileOptions
    {
        AccessKey = keyId,
        SecretKey = secret
    };
    var profile = new CredentialProfile(profileName, options);
    var sharedFile = new SharedCredentialsFile();
    sharedFile.RegisterProfile(profile);
}
```

**주의**  
이러한 코드는 일반적으로 애플리케이션에 없어야 합니다. 애플리케이션에 포함하는 경우 코드, 네트워크 또는 컴퓨터 메모리에서도 일반 텍스트 키가 보이지 않도록 적절한 예방 조치를 취하십시오.

다음은 이 예제에서 생성된 프로필입니다.

```
[my_new_profile]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```

### 프로그래밍 방식으로 기존 프로필 업데이트
<a name="creds-file-update-programmatically"></a>

이 예제에서는 이전에 만든 프로필을 프로그래밍 방식으로 업데이트하는 방법을 보여줍니다. [CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TCredentialProfile.html) 및 [NetSDKCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TSharedCredentialsFile.html)과 같은 [Amazon.Runtime.CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 네임스페이스의 클래스를 사용합니다. 또한 [Amazon](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/N.html) 네임스페이스의 [RegionEndpoint](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TRegionEndpoint.html) 클래스를 사용합니다.

```
using Amazon.Runtime.CredentialManagement;
...

AddRegion("my_new_profile", RegionEndpoint.USWest2);
...

void AddRegion(string profileName, RegionEndpoint region)
{
    var sharedFile = new SharedCredentialsFile();
    CredentialProfile profile;
    if (sharedFile.TryGetProfile(profileName, out profile))
    {
        profile.Region = region;
        sharedFile.RegisterProfile(profile);
    }
}
```

다음은 업데이트된 프로필입니다.

```
[my_new_profile]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
region=us-west-2
```

**참고**  
다른 위치에서 다른 방법을 사용하여 AWS 리전을 설정할 수도 있습니다. 자세한 내용은 [에 대한 AWS 리전 설정 AWS SDK for .NETAWS 리전](net-dg-region-selection.md) 단원을 참조하십시오.

# SDK 스토어 사용(Windows만 해당)
<a name="sdk-store"></a>

([중요 경고 및 지침](net-dg-legacy-creds.md#net-dg-config-creds-warnings-and-guidelines)을 반드시 검토하세요.)

Windows에서 *SDK 스토어*는 프로필을 생성하고 AWS SDK for .NET 애플리케이션의 암호화된 자격 증명을 저장하는 또 다른 곳입니다. `%USERPROFILE%\AppData\Local\AWSToolkit\RegisteredAccounts.json`에 있습니다. 개발 중에 [공유 AWS 보안 인증 파일](creds-file.md) 대신 SDK 스토어를 사용할 수 있습니다.

**주의**  
보안 위험을 방지하려면 목적별 소프트웨어를 개발하거나 실제 데이터로 작업할 때 IAM 사용자를 인증에 사용하지 마세요. 대신 [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)과 같은 보안 인증 공급자를 통한 페더레이션을 사용하십시오.

**참고**  
이 주제의 정보는 단기 또는 장기 보안 인증 정보를 수동으로 획득하고 관리해야 하는 상황을 위한 것입니다. 단기 및 장기 보안 인증 정보에 대한 자세한 내용은 **AWS 및 도구 참조 가이드의 [다른 인증 방법](https://docs.aws.amazon.com/sdkref/latest/guide/access-users.html)을 참조하세요.  
보안 모범 사례를 보려면에 설명된 AWS IAM Identity Center대로를 사용합니다[를 사용하여 인증 AWS](creds-idc.md).

## 일반 정보
<a name="sdk-store-general-info"></a>

SDK 스토어에는 다음과 같은 이점이 있습니다.
+ SDK 스토어의 보안 인증은 암호화되며 SDK 스토어는 사용자의 홈 디렉터리에 상주합니다. 이렇게 하면 예기치 않게 자격 증명이 노출될 위험을 줄일 수 있습니다.
+ SDK 스토어도 [AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/) 및 [AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/AWSToolkitVS/latest/UserGuide/)에 보안 인증을 제공합니다.

SDK 스토어 프로필은 특정 호스트에 있는 특정 사용자에게 고유하며, 다른 호스트나 다른 사용자에게 복사할 수 없습니다. 즉, 다른 호스트 또는 개발자 머신의 개발 머신에 있는 SDK 스토어 프로필을 재사용할 수 없습니다. 또한 프로덕션 애플리케이션에서는 SDK 스토어 프로필을 사용할 수 없습니다.

다음과 같은 방식으로 SDK 스토어에서 프로필을 관리할 수 있습니다.
+ [AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/credentials.html)에서 그래픽 사용자 인터페이스(GUI)를 사용합니다.
+ 이 주제의 뒷부분에서 볼 수 있듯이 AWS SDK for .NET API의 [Amazon.Runtime.CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 네임스페이스를 사용합니다.
+ [AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html)의 명령을 사용합니다(예: `Set-AWSCredential` 및 `Remove-AWSCredentialProfile`).

## 프로필 관리의 예
<a name="sdk-store-examples"></a>

다음 예제에서는 SDK 스토어에서 프로그래밍 방식으로 프로필을 생성하고 업데이트하는 방법을 보여줍니다.

### 프로그래밍 방식으로 프로필 생성
<a name="sdk-store-create-programmatically"></a>

이 예제에서는 프로그래밍 방식으로 프로필을 만들고 SDK 스토어에 저장하는 방법을 보여줍니다. [CredentialProfileOptions](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TCredentialProfileOptions.html), [CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TCredentialProfile.html) 및 [NetSDKCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TNetSDKCredentialsFile.html)과 같은 [Amazon.Runtime.CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 네임스페이스의 클래스를 사용합니다.

```
using Amazon.Runtime.CredentialManagement;
...

// Do not include credentials in your code.
WriteProfile("my_new_profile", SecurelyStoredKeyID, SecurelyStoredSecretAccessKey);
...

void WriteProfile(string profileName, string keyId, string secret)
{
    Console.WriteLine($"Create the [{profileName}] profile...");
    var options = new CredentialProfileOptions
    {
        AccessKey = keyId,
        SecretKey = secret
    };
    var profile = new CredentialProfile(profileName, options);
    var netSdkStore = new NetSDKCredentialsFile();
    netSdkStore.RegisterProfile(profile);
}
```

**주의**  
이러한 코드는 일반적으로 애플리케이션에 없어야 합니다. 애플리케이션에 포함되어 있는 경우 코드, 네트워크 또는 컴퓨터 메모리에서도 일반 텍스트 키가 보이지 않도록 적절한 예방 조치를 취하십시오.

다음은 이 예제에서 생성된 프로필입니다.

```
"[generated GUID]" : {
    "AWSAccessKey" : "01000000D08...[etc., encrypted access key ID]",
    "AWSSecretKey" : "01000000D08...[etc., encrypted secret access key]",
    "ProfileType"  : "AWS",
    "DisplayName"  : "my_new_profile",
}
```

### 프로그래밍 방식으로 기존 프로필 업데이트
<a name="sdk-store-update-programmatically"></a>

이 예제에서는 이전에 만든 프로필을 프로그래밍 방식으로 업데이트하는 방법을 보여줍니다. [CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TCredentialProfile.html) 및 [NetSDKCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TNetSDKCredentialsFile.html)과 같은 [Amazon.Runtime.CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 네임스페이스의 클래스를 사용합니다. 또한 [Amazon](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/N.html) 네임스페이스의 [RegionEndpoint](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TRegionEndpoint.html) 클래스를 사용합니다.

```
using Amazon.Runtime.CredentialManagement;
...

AddRegion("my_new_profile", RegionEndpoint.USWest2);
...

void AddRegion(string profileName, RegionEndpoint region)
{
    var netSdkStore = new NetSDKCredentialsFile();
    CredentialProfile profile;
    if (netSdkStore.TryGetProfile(profileName, out profile))
    {
        profile.Region = region;
        netSdkStore.RegisterProfile(profile);
    }
}
```

다음은 업데이트된 프로필입니다.

```
"[generated GUID]" : {
    "AWSAccessKey" : "01000000D08...[etc., encrypted access key ID]",
    "AWSSecretKey" : "01000000D08...[etc., encrypted secret access key]",
    "ProfileType"  : "AWS",
    "DisplayName"  : "my_new_profile",
    "Region"       : "us-west-2"
}
```

**참고**  
다른 위치에서 다른 방법을 사용하여 AWS 리전을 설정할 수도 있습니다. 자세한 내용은 [에 대한 AWS 리전 설정 AWS SDK for .NETAWS 리전](net-dg-region-selection.md) 단원을 참조하십시오.