3.2.9. Keystone으로 STS Lite 구성 및 사용 (기술 프리뷰)


Amazon STS(Secure Token Service) 및 S3 API는 동일한 네임스페이스에 공존합니다. STS 옵션은 Keystone 옵션과 함께 구성할 수 있습니다.

참고

Ceph Object Gateway에서 동일한 엔드포인트를 사용하여 S3 및 STS API에 모두 액세스할 수 있습니다.

사전 요구 사항

  • Red Hat Ceph Storage 5.0 이상.
  • 실행 중인 Ceph Object Gateway입니다.
  • Boto Python 모듈 버전 3 이상을 설치합니다.
  • Ceph Manager 노드에 대한 루트 수준 액세스.
  • OpenStack 노드에 대한 사용자 수준 액세스.

프로세스

  1. Ceph Object Gateway 클라이언트에 대해 다음 구성 옵션을 설정합니다.

    구문

    ceph config set RGW_CLIENT_NAME rgw_sts_key STS_KEY
    ceph config set RGW_CLIENT_NAME rgw_s3_auth_use_sts true

    rgw_sts_key 는 세션 토큰을 암호화하거나 해독하는 데 사용되는 STS 키이며 정확히 16진수 문자입니다.

    중요

    STS 키는 영숫자여야 합니다.

    [root@mgr ~]# ceph config set client.rgw rgw_sts_key 7f8fd8dd4700mnop
    [root@mgr ~]# ceph config set client.rgw rgw_s3_auth_use_sts true

  2. OpenStack 노드에서 EC2 자격 증명을 생성합니다.

    [user@osp ~]$ openstack ec2 credentials create
    
    +------------+--------------------------------------------------------+
    | Field      | Value                                                  |
    +------------+--------------------------------------------------------+
    | access     | b924dfc87d454d15896691182fdeb0ef                       |
    | links      | {u'self': u'http://192.168.0.15/identity/v3/users/     |
    |            | 40a7140e424f493d8165abc652dc731c/credentials/          |
    |            | OS-EC2/b924dfc87d454d15896691182fdeb0ef'}              |
    | project_id | c703801dccaf4a0aaa39bec8c481e25a                       |
    | secret     | 6a2142613c504c42a94ba2b82147dc28                       |
    | trust_id   | None                                                   |
    | user_id    | 40a7140e424f493d8165abc652dc731c                       |
    +------------+--------------------------------------------------------+

  3. 생성된 인증 정보를 사용하여 GetSessionToken API를 사용하여 임시 보안 인증 정보 세트를 가져옵니다.

    import boto3
    
    access_key = b924dfc87d454d15896691182fdeb0ef
    secret_key = 6a2142613c504c42a94ba2b82147dc28
    
    client = boto3.client('sts',
    aws_access_key_id=access_key,
    aws_secret_access_key=secret_key,
    endpoint_url=https://www.example.com/rgw,
    region_name='',
    )
    
    response = client.get_session_token(
        DurationSeconds=43200
    )

  4. 임시 인증 정보를 얻으려면 S3 호출을 수행하는 데 사용할 수 있습니다.

    s3client = boto3.client('s3',
      aws_access_key_id = response['Credentials']['AccessKeyId'],
      aws_secret_access_key = response['Credentials']['SecretAccessKey'],
      aws_session_token = response['Credentials']['SessionToken'],
      endpoint_url=https://www.example.com/s3,
      region_name='')
    
    bucket = s3client.create_bucket(Bucket='my-new-shiny-bucket')
    response = s3client.list_buckets()
    for bucket in response["Buckets"]:
      print "{name}\t{created}".format(
        name = bucket['Name'],
        created = bucket['CreationDate'],
      )

  5. S3Access 역할을 생성하고 정책을 구성합니다.

    1. 관리 CAPS가 있는 사용자를 할당합니다.

      구문

      radosgw-admin caps add --uid="USER" --caps="roles=*"

      [root@mgr ~]# radosgw-admin caps add --uid="gwadmin" --caps="roles=*"

    2. S3Access 역할을 생성합니다.

      구문

      radosgw-admin role create --role-name=ROLE_NAME --path=PATH --assume-role-policy-doc=TRUST_POLICY_DOC

      [root@mgr ~]# radosgw-admin role create --role-name=S3Access --path=/application_abc/component_xyz/ --assume-role-policy-doc=\{\"Version\":\"2012-10-17\",\"Statement\":\[\{\"Effect\":\"Allow\",\"Principal\":\{\"AWS\":\[\"arn:aws:iam:::user/TESTER\"\]\},\"Action\":\[\"sts:AssumeRole\"\]\}\]\}

    3. S3Access 역할에 권한 정책을 연결합니다.

      구문

      radosgw-admin role-policy put --role-name=ROLE_NAME --policy-name=POLICY_NAME --policy-doc=PERMISSION_POLICY_DOC

      [root@mgr ~]# radosgw-admin role-policy put --role-name=S3Access --policy-name=Policy --policy-doc=\{\"Version\":\"2012-10-17\",\"Statement\":\[\{\"Effect\":\"Allow\",\"Action\":\[\"s3:*\"\],\"Resource\":\"arn:aws:s3:::example_bucket\"\}\]\}

    4. 이제 다른 사용자가 gwadmin 사용자의 역할을 가정할 수 있습니다. 예를 들어 gwuser 사용자는 gwadmin 사용자의 권한을 가정할 수 있습니다.
    5. 사용자의 access_keysecret_key 값을 기록해 둡니다.

      [root@mgr ~]# radosgw-admin user info --uid=gwuser | grep -A1 access_key

  6. AssumeRole API 호출을 사용하여 assuming user의 access_keysecret_key 값을 제공합니다.

    import boto3
    
    access_key = 11BS02LGFB6AL6H1ADMW
    secret_key = vzCEkuryfn060dfee4fgQPqFrncKEIkh3ZcdOANY
    
    client = boto3.client('sts',
    aws_access_key_id=access_key,
    aws_secret_access_key=secret_key,
    endpoint_url=https://www.example.com/rgw,
    region_name='',
    )
    
    response = client.assume_role(
    RoleArn='arn:aws:iam:::role/application_abc/component_xyz/S3Access',
    RoleSessionName='Bob',
    DurationSeconds=3600
    )

    중요

    AssumeRole API에는 S3Access 역할이 필요합니다.

추가 리소스

  • Boto Python 모듈 설치에 대한 자세한 내용은 Red Hat Ceph Storage Object Gateway 가이드S3 액세스 테스트 섹션을 참조하십시오.
  • 자세한 내용은 Red Hat Ceph Storage Object Gateway 가이드사용자 생성 섹션을 참조하십시오.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동