Infograb logo
데이터베이스 액세스 AWS IAM 참조

Teleport 데이터베이스 서비스는 데이터베이스 유형과 설정에 따라 다양한 작업을 수행하기 위해 IAM 권한이 필요합니다. 여기에는 데이터베이스 서버의 엔드포인트와 메타데이터를 검색하고, IAM 인증 토큰을 생성하며, IAM 역할을 가정하는 작업 등이 포함됩니다.

IAM 권한은 teleport db configure aws print-iam 명령어를 사용하여 생성할 수 있습니다. 예를 들어, 다음 명령어는 IAM 정책을 생성하고 출력합니다:

teleport db configure aws print-iam --types rds,redshift --role teleport-db-service-role

특정 유형의 데이터베이스에 대한 IAM 권한에 대해 더 알고 싶다면 아래 관련 섹션을 참조하세요.

DocumentDB

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DocumentDBConnectAsIAMRole",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": [
                "arn:aws:iam::aws-account-id:role/documentdb-user-role"
            ]
        },
        {
            "Sid": "DocumentDBCheckDomainURL",
            "Effect": "Allow",
            "Action": "rds:DescribeDBClusters",
            "Resource": "*"
        }
    ]
}
진술목적
DocumentDBConnectAsIAMRoleIAM 인증을 사용하여 DocumentDB 클러스터에 연결하기 위해 IAM 역할을 가정합니다.
DocumentDBCheckDomainURLDiscovery Service에 의해 자동으로 발견된 경우 도메인의 URL을 검증합니다.

DocumentDB 데이터베이스 사용자로서의 IAM 역할

The Teleport Database Service는 IAM 인증을 사용하여 DocumentDB 클러스터에 연결할 때 IAM 역할을 가정합니다.

DocumentDB IAM 인증에 대한 자세한 내용은 IAM 아이덴티티를 사용한 인증을 참조하세요.

IAM 역할 teleport-db-service-role이 IAM 역할 documentdb-user-role를 가정할 수 있도록 허용하려면 일반적으로 다음이 필요합니다:

1. documentdb-user-role의 신뢰 관계 구성

teleport-db-service-role 또는 그 AWS 계정은 documentdb-user-role의 신뢰 정책에서 Principal로 설정되어야 합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::aws-account-id:role/teleport-db-service-role"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::aws-account-id:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::external-aws-account-id:role/teleport-db-service-role"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "example-external-id"
        }
      }
    }
  ]
}

2. teleport-db-service-role의 권한 정책 구성

teleport-db-service-rolests:AssumeRole 권한이 필요합니다. 예:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Resource": "arn:aws:iam::aws-account-id:role/documentdb-user-role"
        }
    ]
}

이 정책은 teleport-db-service-roledocumentdb-user-role가 동일한 AWS 계정에 있고 teleport-db-service-role의 전체 ARN이 documentdb-user-role의 신뢰 정책에 Principal로 설정되어 있으면 생략할 수 있습니다.

3. teleport-db-service-role의 권한 경계 구성

teleport-db-service-role에 연결된 권한 경계가 없는 경우 이 단계를 건너뛸 수 있습니다. 그렇지 않으면 teleport-db-service-role에 연결된 경계 정책에는 sts:AssumeRole 권한이 포함되어야 하며, 예시는 다음과 같습니다:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

DynamoDB

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DynamoDBConnectAsIAMRole",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": [
                "arn:aws:iam::aws-account-id:role/dynamodb-user-role"
            ]
        },
        {
            "Sid": "DynamoDBSessionTagging",
            "Effect": "Allow",
            "Action": "sts:TagSession",
            "Resource": [
                "*"
            ]
        }
    ]
}
문서목적
DynamoDBConnectAsIAMRoleDynamoDB에 요청을 전달하기 위해 IAM 롤을 가정합니다.
DynamoDBSessionTaggingaws.session_tags에 정의된 태그가 있는 경우 가정된 롤 세션에 태그를 추가합니다.

세션 태깅 권한은 Teleport 데이터베이스 구성의 aws.session_tags 섹션에 태그가 구성된 경우에만 필요합니다.

DynamoDB 데이터베이스 사용자로서의 IAM 역할

Teleport 데이터베이스 서비스는 사용자가 지정한 IAM 역할을 가정하고 DynamoDB에 대한 요청을 대신 전달합니다.
DynamoDB 관련 IAM 권한은 해당 IAM 역할에 연결되어야 합니다.

자세한 DynamoDB 권한 정보는
Amazon DynamoDB에 대한 작업, 리소스 및 조건 키를 참조하세요.

IAM 역할 teleport-db-service-role이 IAM 역할 dynamodb-user-role를 가정할 수 있도록 허용하려면 일반적으로 다음이 필요합니다:

1. dynamodb-user-role의 신뢰 관계 구성

teleport-db-service-role 또는 그 AWS 계정은 dynamodb-user-role의 신뢰 정책에서 Principal로 설정되어야 합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::aws-account-id:role/teleport-db-service-role"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::aws-account-id:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::external-aws-account-id:role/teleport-db-service-role"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "example-external-id"
        }
      }
    }
  ]
}

2. teleport-db-service-role의 권한 정책 구성

teleport-db-service-rolests:AssumeRole 권한이 필요합니다. 예:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Resource": "arn:aws:iam::aws-account-id:role/dynamodb-user-role"
        }
    ]
}

이 정책은 teleport-db-service-roledynamodb-user-role가 동일한 AWS 계정에 있고 teleport-db-service-role의 전체 ARN이 dynamodb-user-role의 신뢰 정책에 Principal로 설정되어 있으면 생략할 수 있습니다.

3. teleport-db-service-role의 권한 경계 구성

teleport-db-service-role에 연결된 권한 경계가 없는 경우 이 단계를 건너뛸 수 있습니다. 그렇지 않으면 teleport-db-service-role에 연결된 경계 정책에는 sts:AssumeRole 권한이 포함되어야 하며, 예시는 다음과 같습니다:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

ElastiCache for Redis

ElastiCache 는 Redis 엔진 버전 7.0 이상에 대한 IAM 인증을 지원합니다.
이는 ElastiCache 에 대한 Teleport 액세스를 구성하는 권장 방법입니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ElastiCacheDescribeUsers",
            "Effect": "Allow",
            "Action": "elasticache:DescribeUsers",
            "Resource": "*"
        },
        {
            "Sid": "ElastiCacheConnect",
            "Effect": "Allow",
            "Action": "elasticache:Connect",
            "Resource": [
                "arn:aws:elasticache:us-east-2:aws-account-id:replicationgroup:replication-group",
                "arn:aws:elasticache:us-east-2:aws-account-id:user:*"
            ]
        }
    ]
}
Statement목적
ElastiCacheDescribeUsers사용자가 IAM 인증과 호환되는지 여부를 결정합니다.
ElastiCacheConnectIAM 인증을 사용하여 연결합니다.

다음 정보를 보려면 ElastiCache에 대한 IAM 인증으로 이동하세요.

ElastiCache 관리 사용자

ElastiCache에 대한 Teleport 접근을 구성하는 권장 방법은 IAM 인증을 사용하는 것으로, 이는 Redis 엔진 버전 7.0 이상에서 지원됩니다.
AWS Secrets Manager에 저장된 비밀번호를 사용하여 관리되는 사용자를 사용하는 것은 ElastiCache에 대한 Teleport 접근을 구성하는 구형 방법입니다.

Teleport에 의해 관리되도록 태그가 지정된 ElastiCache 사용자에 대한 IAM 권한은 다음과 같습니다:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ElastiCacheManageUsers",
            "Effect": "Allow",
            "Action": [
                "elasticache:DescribeUsers",
                "elasticache:ModifyUser",
                "elasticache:ListTagsForResource"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ElastiCacheManagePasswords",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:CreateSecret",
                "secretsmanager:DeleteSecret",
                "secretsmanager:DescribeSecret",
                "secretsmanager:GetSecretValue",
                "secretsmanager:PutSecretValue",
                "secretsmanager:TagResource",
                "secretsmanager:UpdateSecret"
            ],
            "Resource": [
                "arn:aws:secretsmanager:*:aws-account-id:secret:teleport/*"
            ]
        }
    ]
}

Teleport가 사용할 기본 Secrets Manager 키 접두사는 "teleport/"입니다.
Teleport 데이터베이스 구성에 사용자 지정 키 접두사를 구성한 경우, IAM 정책 리소스 이름 teleport를 해당 사용자 지정 접두사에 맞게 업데이트해야 합니다.

Teleport 데이터베이스 구성에 사용자 지정 KMS 키 ID를 구성한 경우, 다음을 IAM 정책에 추가해야 합니다:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": [
                "arn:aws:kms:*:aws-account-id:key/your-kms-id"
            ]
        }
    ]
}

Keyspaces

{
    "버전": "2012-10-17",
    "진술": [
        {
            "Sid": "KeyspacesConnectAsIAMRole",
            "효과": "허용",
            "동작": "sts:AssumeRole",
            "자원": [
                "arn:aws:iam::aws-account-id:role/keyspaces-user-role"
            ]
        }
    ]
}
진술목적
KeyspacesConnectAsIAMRoleKeyspaces에 요청을 전달하기 위해 IAM 역할을 가정합니다.

Keyspaces 데이터베이스 사용자로서의 IAM 역할

Teleport 데이터베이스 서비스는 사용자가 지정한 IAM 역할을 가정하여 요청을 대신하여 Keyspaces에 전달합니다. Keyspaces 관련 IAM 권한은 해당 IAM 역할에 연결되어야 합니다.

자세한 내용은 Amazon Keyspaces ID 기반 정책 예제 를 참조하여 IAM 역할에 부여할 수 있는 Keyspaces 권한에 대해 알아보세요.

IAM 역할 teleport-db-service-role이 IAM 역할 keyspaces-user-role를 가정할 수 있도록 허용하려면 일반적으로 다음이 필요합니다:

1. keyspaces-user-role의 신뢰 관계 구성

teleport-db-service-role 또는 그 AWS 계정은 keyspaces-user-role의 신뢰 정책에서 Principal로 설정되어야 합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::aws-account-id:role/teleport-db-service-role"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::aws-account-id:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::external-aws-account-id:role/teleport-db-service-role"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "example-external-id"
        }
      }
    }
  ]
}

2. teleport-db-service-role의 권한 정책 구성

teleport-db-service-rolests:AssumeRole 권한이 필요합니다. 예:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Resource": "arn:aws:iam::aws-account-id:role/keyspaces-user-role"
        }
    ]
}

이 정책은 teleport-db-service-rolekeyspaces-user-role가 동일한 AWS 계정에 있고 teleport-db-service-role의 전체 ARN이 keyspaces-user-role의 신뢰 정책에 Principal로 설정되어 있으면 생략할 수 있습니다.

3. teleport-db-service-role의 권한 경계 구성

teleport-db-service-role에 연결된 권한 경계가 없는 경우 이 단계를 건너뛸 수 있습니다. 그렇지 않으면 teleport-db-service-role에 연결된 경계 정책에는 sts:AssumeRole 권한이 포함되어야 하며, 예시는 다음과 같습니다:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

MemoryDB

MemoryDB 는 Redis 엔진 버전 7.0 이상에 대한 IAM 인증을 지원합니다.
이는 MemoryDB 에 대한 Teleport 액세스를 구성하는 권장 방법입니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "MemoryDBDescribeUsers",
            "Effect": "Allow",
            "Action": "memorydb:DescribeUsers",
            "Resource": "*"
        },
        {
            "Sid": "MemoryDBConnect",
            "Effect": "Allow",
            "Action": "memorydb:Connect",
            "Resource": [
                "arn:aws:memorydb:us-east-2:aws-account-id:replicationgroup:replication-group",
                "arn:aws:memorydb:us-east-2:aws-account-id:user:*"
            ]
        }
    ]
}
Statement목적
MemoryDBDescribeUsers사용자가 IAM 인증과 호환되는지 여부를 결정합니다.
MemoryDBConnectIAM 인증을 사용하여 연결합니다.

IAM을 사용하여 MemoryDB에 대한 인증에 대한 자세한 내용은 MemoryDB를 위한 IAM으로 인증하기를 참조하세요.

MemoryDB 관리 사용자

MemoryDB에 대한 Teleport 접근을 구성하는 권장 방법은 IAM 인증을 사용하는 것으로, 이는 Redis 엔진 버전 7.0 이상에서 지원됩니다.
AWS Secrets Manager에 저장된 비밀번호를 사용하여 관리되는 사용자를 사용하는 것은 MemoryDB에 대한 Teleport 접근을 구성하는 구형 방법입니다.

Teleport에 의해 관리되도록 태그가 지정된 MemoryDB 사용자에 대한 IAM 권한은 다음과 같습니다:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "MemoryDBManageUsers",
            "Effect": "Allow",
            "Action": [
                "memorydb:DescribeUsers",
                "memorydb:UpdateUser",
                "memorydb:ListTags"
            ],
            "Resource": "*"
        },
        {
            "Sid": "MemoryDBManagePasswords",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:CreateSecret",
                "secretsmanager:DeleteSecret",
                "secretsmanager:DescribeSecret",
                "secretsmanager:GetSecretValue",
                "secretsmanager:PutSecretValue",
                "secretsmanager:TagResource",
                "secretsmanager:UpdateSecret"
            ],
            "Resource": [
                "arn:aws:secretsmanager:*:aws-account-id:secret:teleport/*"
            ]
        }
    ]
}

Teleport가 사용할 기본 Secrets Manager 키 접두사는 "teleport/"입니다.
Teleport 데이터베이스 구성에 사용자 지정 키 접두사를 구성한 경우, IAM 정책 리소스 이름 teleport를 해당 사용자 지정 접두사에 맞게 업데이트해야 합니다.

Teleport 데이터베이스 구성에 사용자 지정 KMS 키 ID를 구성한 경우, 다음을 IAM 정책에 추가해야 합니다:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": [
                "arn:aws:kms:*:aws-account-id:key/your-kms-id"
            ]
        }
    ]
}

OpenSearch

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "OpenSearchCheckDomainURL",
            "Effect": "Allow",
            "Action": "es:DescribeDomains",
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "OpenSearchConnectAsIAMRole",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": [
                "arn:aws:iam::aws-account-id:role/opensearch-user-role"
            ]
        }
    ]
}
진술목적
OpenSearchCheckDomainURLDiscovery Service에 의해 자동 발견된 도메인의 URL을 검증합니다.
OpenSearchConnectAsIAMRole요청을 OpenSearch로 전달하기 위해 IAM 역할을 자산합니다.

OpenSearch 데이터베이스 사용자로서의 IAM 역할

OpenSearch는 IAM 역할을 OpenSearch 백엔드 역할에 매핑합니다.
Teleport Database Service는 OpenSearch API 요청에 서명하기 위해 이러한 "액세스" IAM 역할을 가정할 수 있어야 합니다.

자세한 내용은
Amazon OpenSearch Service에서 세분화된 액세스 제어
를 참조하여 이러한 역할에 대해 구성할 수 있는 권한에 대해 알아보세요.

IAM 역할 teleport-db-service-role이 IAM 역할 opensearch-user-role를 가정할 수 있도록 허용하려면 일반적으로 다음이 필요합니다:

1. opensearch-user-role의 신뢰 관계 구성

teleport-db-service-role 또는 그 AWS 계정은 opensearch-user-role의 신뢰 정책에서 Principal로 설정되어야 합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::aws-account-id:role/teleport-db-service-role"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::aws-account-id:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::external-aws-account-id:role/teleport-db-service-role"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "example-external-id"
        }
      }
    }
  ]
}

2. teleport-db-service-role의 권한 정책 구성

teleport-db-service-rolests:AssumeRole 권한이 필요합니다. 예:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Resource": "arn:aws:iam::aws-account-id:role/opensearch-user-role"
        }
    ]
}

이 정책은 teleport-db-service-roleopensearch-user-role가 동일한 AWS 계정에 있고 teleport-db-service-role의 전체 ARN이 opensearch-user-role의 신뢰 정책에 Principal로 설정되어 있으면 생략할 수 있습니다.

3. teleport-db-service-role의 권한 경계 구성

teleport-db-service-role에 연결된 권한 경계가 없는 경우 이 단계를 건너뛸 수 있습니다. 그렇지 않으면 teleport-db-service-role에 연결된 경계 정책에는 sts:AssumeRole 권한이 포함되어야 하며, 예시는 다음과 같습니다:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

RDS

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "RDSAutoEnableIAMAuth",
            "Effect": "Allow",
            "Action": [
                "rds:ModifyDBCluster",
                "rds:ModifyDBInstance"
            ],
            "Resource": "*"
        },
        {
            "Sid": "RDSConnect",
            "Effect": "Allow",
            "Action": "rds-db:connect",
            "Resource": "*"
        },
        {
            "Sid": "RDSFetchMetadata",
            "Effect": "Allow",
            "Action": [
                "rds:DescribeDBClusters",
                "rds:DescribeDBInstances"
            ],
            "Resource": "*"
        }
    ]
}
성명목적
RDSAutoEnableIAMAuthRDS 인스턴스 및 Aurora 클러스터에서 IAM 인증을 자동으로 활성화합니다.
RDSConnect데이터베이스에 연결하기 위해 IAM 인증 토큰을 생성합니다.
RDSFetchMetadataAWS 태그를 데이터베이스 레이블로 자동으로 가져오거나 데이터베이스의 AWS 리전과 같은 누락된 정보를 찾습니다.

Teleport Database Service는 rds:ModifyDBInstancerds:ModifyDBCluster를 사용하여 각각 RDS 인스턴스와 Aurora 클러스터에서 IAM 인증을 자동으로 활성화합니다.

데이터베이스에서 IAM 인증이 이미 활성화되어 있는 경우 RDSAutoEnableIAMAuth 권한을 생략할 수 있습니다.

rds-db:connect 권한은 데이터베이스에 연결하는 데 필요합니다.
특정 데이터베이스, 지역 또는 사용자만 허용하도록 권한의 범위를 줄일 수 있습니다.
리소스 ARN은 다음 형식을 가집니다:

arn:aws:rds-db:{Region}:{AccountID}:dbuser:{ResourceID}/{UserName}

rds-db:connect 권한 부여 구문에 대한 자세한 정보는
IAM 데이터베이스 액세스를 위한 IAM 정책 만들기 및 사용하기를 참조하세요.

데이터 입력: Teleport Discovery Service에 의해 발견된 데이터베이스는 완전한 메타데이터와 함께 등록해야 하므로, 모든 AWS 데이터베이스가 자동으로 발견되는 경우 RDSFetchMetadata 권한을 생략할 수도 있습니다.

RDS Proxy

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "RDSProxyConnect",
            "Effect": "Allow",
            "Action": "rds-db:connect",
            "Resource": "*"
        },
        {
            "Sid": "RDSProxyFetchMetadata",
            "Effect": "Allow",
            "Action": [
                "rds:DescribeDBProxies",
                "rds:DescribeDBProxyEndpoints"
            ],
            "Resource": "*"
        }
    ]
}
명령문목적
RDSProxyConnect데이터베이스에 연결하기 위한 IAM 인증 토큰을 생성합니다.
RDSProxyFetchMetadataAWS 태그를 데이터베이스 레이블로 자동으로 가져오거나 데이터베이스의 AWS 리전과 같은 누락된 정보를 찾아냅니다.

rds-db:connect 권한은 데이터베이스에 연결하는 데 필요합니다.
특정 데이터베이스, 지역 또는 사용자만 허용하도록 권한의 범위를 줄일 수 있습니다.
리소스 ARN은 다음 형식을 가집니다:

arn:aws:rds-db:{Region}:{AccountID}:dbuser:{ResourceID}/{UserName}

rds-db:connect 권한 부여 구문에 대한 자세한 정보는
IAM 데이터베이스 액세스를 위한 IAM 정책 만들기 및 사용하기를 참조하세요.

데이터 입력: Teleport Discovery Service에 의해 발견된 데이터베이스는 완전한 메타데이터와 함께 등록해야 하므로, 모든 AWS 데이터베이스가 자동으로 발견되는 경우 RDSProxyFetchMetadata 권한을 생략할 수도 있습니다.

Redshift

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "RedshiftConnectAsDBUser",
            "Effect": "Allow",
            "Action": "redshift:GetClusterCredentials",
            "Resource": "*"
        },
        {
            "Sid": "RedshiftConnectAsIAMRole",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": [
                "arn:aws:iam::aws-account-id:role/redshift-user-role"
            ]
        },
        {
            "Sid": "RedshiftFetchMetadata",
            "Effect": "Allow",
            "Action": "redshift:DescribeClusters",
            "Resource": "*"
        }
    ]
}
진술목적
RedshiftConnectAsDBUser기존 데이터베이스 사용자로 데이터베이스에 연결합니다.
RedshiftConnectAsIAMRole데이터베이스에 연결하기 위해 IAM 역할을 가정하고 역할의 IAM 권한과 1:1로 매핑된 권한을 사용합니다.
RedshiftFetchMetadataAWS 태그를 데이터베이스 레이블로 자동으로 가져오거나 데이터베이스의 AWS 리전과 같은 누락된 정보를 찾습니다.

RedshiftConnectAsDBUser 진술의 범위를 특정 사용자, 데이터베이스 및 데이터베이스 그룹만 허용하도록 업데이트하여 축소할 수 있습니다. 지정할 수 있는 리소스 ARN의 형식은 다음과 같습니다:

arn:aws:redshift:{Region}:{AccountID}:dbuser:{ClusterName}/{UserName}arn:aws:redshift:{Region}:{AccountID}:dbname:{ClusterName}/{DatabaseName}arn:aws:redshift:{Region}:{AccountID}:dbgroup:{ClusterName}/{DatabaseGroupName}

GetClusterCredentials를 호출할 수 있는 IAM 역할 또는 사용자 만들기에 대한 자세한 정보는 redshift:GetClusterCredentials 권한 부여 구문에 대해 설명합니다.

기존 데이터베이스 사용자로 또는 데이터베이스에 자동으로 매핑될 IAM 역할로 인증할 수 있습니다. 해당 IAM 진술은 사용하려는 방법에 대해서만 필요합니다. IAM 역할이 데이터베이스 서비스의 아이덴티티를 신뢰된 주체로 지정하며, 두 아이덴티티가 동일한 AWS 계정에 있는 경우, RedshiftConnectAsIAMRole 진술도 생략할 수 있습니다.

데이터 입력: Teleport Discovery Service에 의해 발견된 데이터베이스는 완전한 메타데이터와 함께 등록해야 하므로, 모든 AWS 데이터베이스가 자동으로 발견되는 경우 RedshiftFetchMetadata 권한을 생략할 수도 있습니다.

Redshift 데이터베이스 사용자로서의 IAM 역할

다음 권한 정책은 Teleport 사용자가 데이터베이스 사용자로 지정할 수 있는 IAM 역할에 첨부되어야 합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "RedshiftConnectWithIAM",
            "Effect": "Allow",
            "Action": "redshift:GetClusterCredentialsWithIAM",
            "Resource": "*"
        }
    ]
}
진술목적
RedshiftConnectWithIAM이 IAM 신원에서 1:1로 매핑된 데이터베이스 사용자로서 Redshift 데이터베이스에 연결합니다.

IAM 역할은 신원의 IAM 권한에서 1:1로 매핑된 권한을 가진 자동 생성된 데이터베이스 사용자로 연결할 수 있습니다.
데이터베이스의 권한은 IAM 신원에 첨부된 redshift-data:* 진술로 부여되며, 예를 들어 redshift-data:GetStatementResult가 있습니다.
Teleport 사용자는 데이터베이스 사용자로서 "role/{RoleName}"를 지정하여 해당 역할로 연결할 수 있습니다. 예:

tsh db connect redshift-example-db --db-user=role/redshift-user-role

자세한 내용은
Amazon Redshift의 아이덴티티 기반 정책 사용하기
에서 데이터베이스 사용자에 매핑된 사용 가능한 Redshift IAM 권한에 대한 정보를 참조하세요.

IAM 역할 teleport-db-service-role이 IAM 역할 redshift-user-role를 가정할 수 있도록 허용하려면 일반적으로 다음이 필요합니다:

1. redshift-user-role의 신뢰 관계 구성

teleport-db-service-role 또는 그 AWS 계정은 redshift-user-role의 신뢰 정책에서 Principal로 설정되어야 합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::aws-account-id:role/teleport-db-service-role"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::aws-account-id:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::external-aws-account-id:role/teleport-db-service-role"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "example-external-id"
        }
      }
    }
  ]
}

2. teleport-db-service-role의 권한 정책 구성

teleport-db-service-rolests:AssumeRole 권한이 필요합니다. 예:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Resource": "arn:aws:iam::aws-account-id:role/redshift-user-role"
        }
    ]
}

이 정책은 teleport-db-service-roleredshift-user-role가 동일한 AWS 계정에 있고 teleport-db-service-role의 전체 ARN이 redshift-user-role의 신뢰 정책에 Principal로 설정되어 있으면 생략할 수 있습니다.

3. teleport-db-service-role의 권한 경계 구성

teleport-db-service-role에 연결된 권한 경계가 없는 경우 이 단계를 건너뛸 수 있습니다. 그렇지 않으면 teleport-db-service-role에 연결된 경계 정책에는 sts:AssumeRole 권한이 포함되어야 하며, 예시는 다음과 같습니다:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

Redshift Serverless

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "RedshiftServerlessConnectAsIAMRole",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": [
                "arn:aws:iam::aws-account-id:role/redshift-serverless-user-role"
            ]
        },
        {
            "Sid": "RedshiftServerlessFetchMetadata",
            "Effect": "Allow",
            "Action": [
                "redshift-serverless:GetEndpointAccess",
                "redshift-serverless:GetWorkgroup"
            ],
            "Resource": "*"
        }
    ]
}
StatementPurpose
RedshiftServerlessFetchMetadataAWS 태그를 데이터베이스 레이블로 자동으로 가져오거나 데이터베이스의 AWS 리전과 같은 누락된 정보를 찾습니다.
RedshiftServerlessConnectAsIAMRole데이터베이스 사용자로 연결하기 위해 IAM 역할을 맡습니다.

데이터 입력: Teleport Discovery Service에 의해 발견된 데이터베이스는 완전한 메타데이터와 함께 등록해야 하므로, 모든 AWS 데이터베이스가 자동으로 발견되는 경우 RedshiftServerlessFetchMetadata 권한을 생략할 수도 있습니다.

Redshift Serverless는 IAM 역할을 데이터베이스 사용자에 매핑합니다. Teleport Database Service는 IAM 인증 토큰을 생성하는 IAM 권한이 부여된 이러한 "접근" IAM 역할을 맡을 수 있어야 합니다.

Redshift Serverless 데이터베이스 사용자로서의 IAM 역할

다음 권한 정책은 Teleport 사용자가 데이터베이스 사용자로 지정할 수 있는 IAM 역할에 첨부되어야 합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "RedshiftServerlessConnect",
            "Effect": "Allow",
            "Action": "redshift-serverless:GetCredentials",
            "Resource": "arn:aws:redshift-serverless:us-east-2:aws-account-id:workgroup/workgroup-id"
        }
    ]
}
진술목적
RedshiftServerlessConnect데이터베이스에 연결하기 위한 자격 증명을 얻습니다.

리소스 ARN 문자열의 형식은 다음과 같습니다:

arn:aws:redshift-serverless:{Region}:{AccountID}:workgroup/{WorkgroupID}

Teleport 사용자는 IAM 역할로 연결하기 위해 역할 이름을 데이터베이스 사용자로 지정할 수 있습니다. 예를 들어

tsh db connect redshift-serverless-example-db --db-user=redshift-serverless-user-role

Amazon Redshift Serverless의 ID 및 액세스 관리를 참조하여 Redshift Serverless 권한 구성에 대한 자세한 정보를 확인하세요.

IAM 역할 teleport-db-service-role이 IAM 역할 redshift-serverless-user-role를 가정할 수 있도록 허용하려면 일반적으로 다음이 필요합니다:

1. redshift-serverless-user-role의 신뢰 관계 구성

teleport-db-service-role 또는 그 AWS 계정은 redshift-serverless-user-role의 신뢰 정책에서 Principal로 설정되어야 합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::aws-account-id:role/teleport-db-service-role"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::aws-account-id:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::external-aws-account-id:role/teleport-db-service-role"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "example-external-id"
        }
      }
    }
  ]
}

2. teleport-db-service-role의 권한 정책 구성

teleport-db-service-rolests:AssumeRole 권한이 필요합니다. 예:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Resource": "arn:aws:iam::aws-account-id:role/redshift-serverless-user-role"
        }
    ]
}

이 정책은 teleport-db-service-roleredshift-serverless-user-role가 동일한 AWS 계정에 있고 teleport-db-service-role의 전체 ARN이 redshift-serverless-user-role의 신뢰 정책에 Principal로 설정되어 있으면 생략할 수 있습니다.

3. teleport-db-service-role의 권한 경계 구성

teleport-db-service-role에 연결된 권한 경계가 없는 경우 이 단계를 건너뛸 수 있습니다. 그렇지 않으면 teleport-db-service-role에 연결된 경계 정책에는 sts:AssumeRole 권한이 포함되어야 하며, 예시는 다음과 같습니다:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
Teleport 원문 보기