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 노드에 대한 사용자 수준 액세스.
프로세스
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 truergw_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 trueOpenStack 노드에서 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=*"예
[root@mgr ~]# 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예
[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\"\]\}\]\}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\"\}\]\}-
이제 다른 사용자가
gwadmin사용자의 역할을 가정할 수 있습니다. 예를 들어gwuser사용자는gwadmin사용자의 권한을 가정할 수 있습니다. 사용자의
access_key및secret_key값을 기록해 둡니다.예
[root@mgr ~]# radosgw-admin user info --uid=gwuser | grep -A1 access_key
AssumeRole API 호출을 사용하여 assuming user의
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 가이드 의 S3 액세스 테스트 섹션을 참조하십시오.
- 자세한 내용은 Red Hat Ceph Storage Object Gateway 가이드 의 사용자 생성 섹션을 참조하십시오.