Amazon Redshift CLI 또는 API를 이용한 IAM ID에 대한 데이터베이스 자격 증명 생성 - Amazon Redshift

Amazon Redshift CLI 또는 API를 이용한 IAM ID에 대한 데이터베이스 자격 증명 생성

임시 데이터베이스 사용자 자격 증명을 프로그래밍 방식으로 생성하기 위해 Amazon Redshift는 get-cluster-credentials 명령을 AWS Command Line Interface(AWS CLI) 및 GetClusterCredentials API 작업에 제공합니다. 또는 GetClusterCredentials 작업을 호출하고, 데이터베이스 사용자 자격 증명을 검색하고, SQL 클라이언트와 Amazon Redshift 데이터베이스 사이를 연결하는 과정을 관리하는 Amazon Redshift JDBC 또는 ODBC 드라이버로 SQL 클라이언트를 구성할 수 있습니다. 자세한 내용은 데이터베이스 사용자 자격 증명 생성을 위한 JDBC 및 ODBC 옵션 단원을 참조하십시오.

참고

Amazon Redshift JDBC 또는 ODBC 드라이버를 사용해 데이터베이스 사용자 자격 증명을 만드는 방식을 권장합니다.

이 단원에서는 GetClusterCredentials 작업이나 get-cluster-credentials 명령을 프로그램 방식으로 호출하고, 데이터베이스 사용자 자격 증명을 검색하고, 데이터베이스에 연결하는 단계를 설명합니다.

임시 데이터베이스 자격 증명의 생성 및 사용
  1. 필수 권한으로 역할 또는 사용자를 새로 만들거나 수정하십시오. IAM 권한에 대한 자세한 내용은 GetClusterCredentials 호출 권한이 있는 IAM 역할 생성 단원을 참조하세요.

  2. 사용자 또는 역할로서 귀하는 이전 단계에서 get-cluster-credentials CLI 명령을 실행하거나 GetClusterCredentials API 작업을 호출하고 다음 값을 제공할 권한이 있습니다.

    • [클러스터 식별자(Cluster identifier)] – 데이터베이스가 포함된 클러스터의 이름.

    • [데이터베이스 사용자 이름(Database user name)] – 기존 또는 신규 데이터베이스 사용자의 이름.

      • 데이터베이스에 사용자가 없고 AutoCreate가 True인 경우, PASSWORD 비활성 상태로 새 사용자를 만듭니다.

      • 사용자가 없고 AutoCreate가 False인 경우 이 요청이 실패합니다.

      • 이 예에서 데이터베이스 사용자 이름은 temp_creds_user입니다.

    • [Autocreate] – (옵션) 데이터베이스 사용자 이름이 존재하지 않으면 새 사용자를 생성합니다.

    • [데이터베이스 이름(Database name)] – (옵션) 사용자가 로그온할 권한이 있는 데이터베이스의 이름. 데이터베이스 이름이 지정되지 않은 경우 사용자는 모든 클러스터 데이터베이스에 로그온할 수 있습니다.

    • [데이터베이스 그룹(Database groups)] – (옵션) 기존 데이터베이스 사용자 그룹의 목록. 성공적으로 로그인하면 지정된 사용자 그룹에 데이터베이스 사용자가 추가됩니다. 그룹을 지정하지 않으면 사용자는 PUBLIC 권한만 가집니다. 사용자 그룹 이름은 사용자 또는 역할에 연결된 IAM 정책에 지정된 dbgroup 리소스 ARN과 일치해야 합니다.

    • [만료 시간(Expiration time)] – (옵션) 임시 자격 증명이 만료할 때까지 남은 시간(초). 900초(15분)~3600초(60분) 사이로 지정할 수 있습니다. 기본값은 900초입니다.

  3. Amazon Redshift는 사용자가 지정된 리소스로 GetClusterCredentials 작업을 호출할 권한이 있는지 검증합니다.

  4. Amazon Redshift는 임시 암호와 데이터베이스 사용자 이름을 반환합니다.

    다음 예에서는 Amazon Redshift CLI를 사용하여 temp_creds_user라는 기존 사용자에 대한 임시 데이터베이스 자격 증명을 새로 만듭니다.

    aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user --db-name exampledb --duration-seconds 3600

    쿼리 결과는 다음과 같습니다.

    {
      "DbUser": "IAM:temp_creds_user", 
      "Expiration": "2016-12-08T21:12:53Z", 
      "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg=="
    }

    다음 예에서는 Amazon Redshift CLI와 autocreate를 사용하여 신규 사용자에 대한 임시 데이터베이스 자격 증명을 생성하고 이 사용자를 그룹 example_group에 추가합니다.

    aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user --auto-create --db-name exampledb --db-groups example_group --duration-seconds 3600

    쿼리 결과는 다음과 같습니다.

    {
      "DbUser": "IAMA:temp_creds_user:example_group", 
      "Expiration": "2016-12-08T21:12:53Z", 
      "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg=="
    }
  5. Amazon Redshift 클러스터로 Secure Socket Layer(SSL) 인증을 연결하고 사용자 이름과 암호로 GetClusterCredentials 응답에서 로그인 요청을 보냅니다. 사용자 이름에 IAM:temp_creds_user 또는 IAMA:temp_creds_user의 예처럼 IAM: 또는 IAMA: 접두사를 넣으십시오.

    중요

    SQL 클라이언트를 구성하여 SSL을 요청합니다. 혹은 SQL 클라이언트가 자동으로 SSL과 연결 시도를 하면 어떤 식으로든 실패할 경우 SSL가 아닌 곳으로 대체할 수 있습니다. 이 경우 자격 증명이 만료되었거나 유효하지 않기 때문에 첫 번째 연결 시도가 실패할 수 있으며, 이후 SSL 연결이 아니기 때문에 두 번째 연결이 실패합니다. 이렇게 되면 첫 번째 오류 메시지가 누락될 수 있습니다. SSL을 이용한 클러스터 연결에 대한 자세한 내용은 연결을 위한 보안 옵션 구성 단원을 참조하십시오.

  6. 연결이 SSL을 사용하지 않으면 연결 시도가 실패합니다.

  7. 클러스터가 SQL 클라이언트로 authentication 요청을 보냅니다.

  8. 그러면 SQL 클라이언트가 클러스터로 임시 암호를 보냅니다.

  9. 암호가 유효하고 아직 만료되지 않았다면 클러스터가 연결을 완료합니다.