2.3.11.5. Keystone과 함께 STS Lite를 구성 및 사용 (기술 프리뷰)
Amazon STS(Secure Token Service) 및 S3 API는 동일한 네임스페이스에 공존합니다. STS 옵션은 Keystone 옵션과 함께 구성할 수 있습니다.
S3 및 STS API는 모두 Ceph Object Gateway에서 동일한 끝점을 사용하여 액세스할 수 있습니다.
사전 요구 사항
- Red Hat Ceph Storage 3.2 이상.
- 실행 중인 Ceph 오브젝트 게이트웨이.
- Boto Python 모듈, 버전 3 이상 설치.
절차
다음 옵션을 사용하여
group_vars/rgws.yml
파일을 열고 편집합니다.rgw_sts_key = STS_KEY rgw_s3_auth_use_sts = true
교체:
-
세션 토큰을 암호화하는 데 사용되는 키가 있는
STS_KEY
.
-
세션 토큰을 암호화하는 데 사용되는 키가 있는
적절한 Ceph Ansible 플레이북을 다시 실행합니다.
베어 메탈 배포:
[user@admin ceph-ansible]$ ansible-playbook site.yml --limit rgws
컨테이너 배포:
[user@admin ceph-ansible]$ ansible-playbook site-docker.yml --limit rgws
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 | +------------+--------------------------------------------------------+
생성된 자격 증명을 사용하여 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 )
임시 인증 정보를 얻는 데는 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'], )
새 S3Access 역할을 생성하고 정책을 구성합니다.
관리 CAPS가 있는 사용자를 할당합니다.
구문
radosgw-admin caps add --uid="USER" --caps="roles=*"
예제
[user@client]$ radosgw-admin caps add --uid="gwadmin" --caps="roles=*"
S3Access 역할을 생성합니다.
구문
radosgw-admin role create --role-name=ROLE_NAME --path=PATH --assume-role-policy-doc=TRUST_POLICY_DOC
예제
[user@client]$ 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\"\]\}\]\}
S3Access 역할에 권한 정책을 연결합니다.
구문
radosgw-admin role-policy put --role-name=ROLE_NAME --policy-name=POLICY_NAME --policy-doc=PERMISSION_POLICY_DOC
예제
[user@client]$ 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\"\}\]\}
-
이제 다른 사용자가
gwadmin
사용자의 역할을 가정할 수 있습니다. 예를 들어gwuser
사용자는gwadmin
사용자의 권한을 가정할 수 있습니다. 가정 사용자의
access_key
및secret_key
값을 기록해 둡니다.예제
[user@client]$ radosgw-admin user info --uid=gwuser | grep -A1 access_key
AssumeRole API 호출을 사용하여 assuming 사용자의
access_key
및secret_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 가이드 의 Test S3 Access 섹션을 참조하십시오.
- 자세한 내용은 Red Hat Ceph Storage Object Gateway 가이드 의 Create a User 섹션을 참조하십시오.