서비스 간 액세스 권한 부여
IBM Cloud® Identity and Access Management(IAM)를 사용하여 한 서비스에 다른 서비스에 대한 액세스 권한을 부여하는 권한 부여를 작성하거나 제거하십시오. 권한 부여 위임을 사용하여 종속 서비스에 대한 액세스를 부여하는 액세스 정책을 자동으로 작성하십시오.
IAM의 많은 기능은 IBM Cloud 리소스에 대한 사용자 및 애플리케이션 액세스를 관리하고 적용하는 데 중점을 두고 있습니다. 그러나 한 서비스에 다른 서비스에 있는 사용자의 리소스에 대한 액세스 권한을 제공해야 하는 시나리오가 발생할 수도 있습니다. 이 유형의 액세스 권한을 권한 부여라고 합니다.
권한 부여에서, 소스 서비스는 대상 서비스에 대한 액세스 권한이 부여되는 서비스입니다. 선택되는 역할은 소스 서비스의 액세스 권한 레벨을 정의합니다. 대상 서비스는 지정되는 역할을 기반으로 소스 서비스가 액세스할 수 있도록 권한을 부여하는 서비스입니다. 소스 서비스는 권한 부여가 작성되는 계정과 동일한 계정에 있거나 다른 계정에 있을 수 있습니다. 대상 서비스는 항상 권한 부여가 작성되는 계정에 있습니다. IBM Cloud® 콘솔에 있는 권한 부여 페이지의 특정 권한 부여에 대한 소스 계정 열을 보아 소스 서비스가 현재 계정에 있는지, 또는 다른 계정에 있는지 볼 수 있습니다.
종속 서비스 승인
일부 경우에는 소스 서비스 외에 종속 서비스에도 권한을 부여할 수 있습니다. 이 경우 대상 서비스에 액세스할 수 있도록 설정된 소스 서비스가 다른 서비스에 종속되어 있습니다. 워크플로우를 완료하려면 이러한 종속 서비스에도 액세스 권한이 지정되어야 합니다. 다음 다이어그램은 소스, 대상 및 종속 서비스 간의 액세스 권한을 위임하는 프로세스를 보여줍니다:
역할에 대한 자세한 내용은 서비스 액세스 역할을 참조하세요.
다음 예제에서는 소스, 대상 및 종속 서비스 간의 관계가 어떻게 작동하는지 설명합니다. IBM Cloud Object Storage 인스턴스에 의존하여 데이터를 저장하는 IBM Watson® 서비스가 있다고 가정해 보겠습니다. IBM Watson 서비스와 IBM® Key Protect 서비스 간에 권한 부여를 사용으로 설정할 때 Object Storage 인스턴스가 사용자의 Key Protect 인스턴스에 있는 키에 액세스하도록 해야 할 수 있습니다. 따라서 이 권한 부여는 IBM Watson 서비스와 Key Protect 서비스 간에 대한 것이지만, Object Storage 서비스 또한 IBM Watson 서비스의 종속 서비스로서 액세스 권한이 부여됩니다. 종속 서비스에 대해 권한 부여 사용 옵션을 선택하면 종속 서비스에 대해 정책이 자동으로 작성되므로 추가 조치를 수행할 필요가 없습니다.
소스 서비스의 종속 서비스는 소스 서비스의 계정에 있을 수 있으며, 이는 사용자의 계정에 이 서비스가 표시되지 않음을 의미합니다. 그러나 소스 서비스가 해당 종속 서비스에 대해 작성하는 액세스 정책은 항상 사용자에게 표시됩니다. 사용자는 권한 페이지에서 특정 권한 부여의 유형 열을 확인하여 사용자가 작성한 권한 부여와 소스 서비스가 작성한 권한 부여를 구별할 수 있습니다.
콘솔에서 권한 작성
서비스 간 권한 부여를 작성하려면 대상 서비스에 대한 액세스 권한이 있어야 합니다. 사용자는 자신이 대상 서비스에 대해 갖고 있는 액세스 권한 레벨만큼의 액세스 권한만 부여할 수 있습니다. 예를 들어, 대상 서비스에 대해 뷰어 액세스 권한이 있는 경우에는 권한 부여에 대해 뷰어 역할만 지정할 수 있습니다.
-
IBM Cloud 콘솔에서 관리 > **액세스(IAM)**를 클릭하고 권한을 선택하십시오.
-
작성을 클릭하십시오.
-
소스 계정을 선택하십시오.
- 대상에 액세스해야 하는 소스가 이 계정에 있는 경우 이 계정을 선택합니다.
- 대상에 액세스해야 하는 소스가 다른 계정에 있는 경우 다른 계정을 선택합니다. 그런 다음 소스 계정의 계정 ID를 입력하십시오.
-
액세스 권한이 필요한 서비스를 선택합니다.
- 개별 서비스를 선택하고 소스에 모든 리소스를 포함할지, 특정 리소스 그룹에 있는 인스턴스만 포함할지, 계정의 특정 인스턴스만 포함할지 지정할 수 있습니다.
- 신규 모든 ID 및 액세스 사용 서비스를 선택하고 리소스 그룹 ID를 선택하거나 입력할 수도 있습니다.
신규 리소스 그룹을 소스로 입력하면 리소스 그룹의 서비스 인스턴스가 계정의 대상 리소스에 액세스할 수 있습니다. 리소스에 직접 액세스 권한을 부여하지 않으려는 경우 이 액세스 수준을 설정할 수 있습니다.
-
대상을 선택합니다.
-
대상에 모든 리소스를 포함할지 특정 리소스를 포함할지 지정합니다. 특정 리소스를 대상으로 선택한 경우 속성을 추가하여 액세스 범위를 더 좁힐 수 있습니다. 속성 유형은 선택한 대상 서비스에 따라 다릅니다.
-
(선택 사항) 소스 및 종속 서비스에서 권한 위임 허용을 선택하여 소스 서비스에서 종속 서비스에 대한 액세스 권한을 위임할 수 있도록 허용합니다. 이 옵션은 소스 서비스에 종속 서비스가 있는 경우에만 표시됩니다. 이 옵션을 선택하면 소스 서비스가 종속 서비스에 대해 자동으로 정책을 작성합니다.
-
대상 서비스에 액세스하는 소스 서비스에 액세스를 지정할 역할을 선택하십시오.
-
권한 부여를 클릭하십시오.
다른 계정의 서비스와 현재 계정의 대상 서비스 간에 권한을 만드는 경우 대상 리소스에만 액세스하면 됩니다. 소스 계정에 대해서는 계정 번호만 있으면 됩니다.
CLI를 사용하여 권한 작성
소스 서비스가 대상 서비스에 액세스하도록 권한을 부여하려면 ibmcloud iam authorization-policy-create 명령을 실행하십시오.
다음 샘플은 모의 데이터를 사용하여 IBM Cloud Object Storage의 특정 소스 서비스 인스턴스가 IBM Key Protect의 특정 대상 서비스 인스턴스에 액세스하도록 권한을 부여하는 정책을 작성합니다.
ibmcloud iam authorization-policy-create cloud-object-storage kms Reader --source-service-instance-id 123123 --target-service-instance-id 456456
이 명령에 사용할 수 있는 모든 매개변수에 대한 자세한 정보는 ibmcloud iam authorization-policy-create를 참조하십시오.
Terraform을 사용하여 권한 부여 작성
서비스 간 권한 부여를 작성하려면 대상 서비스에 대한 액세스 권한이 있어야 합니다. 사용자는 자신이 대상 서비스에 대해 갖고 있는 액세스 권한 레벨만큼의 액세스 권한만 부여할 수 있습니다. 예를 들어, 대상 서비스에 대해 뷰어 액세스 권한이 있는 경우에는 권한 부여에 대해 뷰어 역할만 지정할 수 있습니다.
Terraform을 사용하여 인증을 만들려면 먼저 다음 사항을 완료해야 합니다:
- Terraform CLI를 설치하고 IBM Cloud 제공자 플러그인을 구성합니다. 자세한 내용은 테라폼 시작하기 IBM Cloud® 튜토리얼을 참조하세요. 플러그인은 이 태스크를 완료하는 데 사용되는 IBM Cloud API를 요약합니다.
- 이름이
main.tf인 Terraform 구성 파일을 작성하십시오. 이 파일에서는 HashiCorp 구성 언어를 사용하여 리소스를 정의합니다. 자세한 내용은 테라폼 문서를 참조하세요.
테라폼을 사용하여 인증을 만들려면 다음 단계를 따르세요:
-
main.tf파일에ibm_iam_authorization_policy리소스 인수를 사용하여 서비스 간 권한 부여 정책을 만듭니다.다음 예는 서비스 간에 인증을 생성하는 예제입니다:
resource "ibm_iam_authorization_policy" "policy" { source_service_name = "cloud-object-storage" target_service_name = "kms" roles = ["Reader"] description = "Authorization Policy" transaction_id = "terraformAuthorizationPolicy" }ibm_iam_authorization_policy리소스에는 소스 서비스, 대상 서비스 및 역할이 필요합니다. 소스 서비스에는 대상 서비스에 대한 액세스 권한이 부여되며, 역할은 해당 액세스가 허용하는 권한 수준입니다. 선택 사항으로 인증에 대한 설명과 트랜잭션 ID를 추가할 수 있습니다.더 많은 예제는 인증 리소스에 대한 Terraform 문서를 참조하세요.
-
구성 파일 빌드를 완료한 후 Terraform CLI를 초기화합니다. 자세한 내용은 작업 디렉터리 초기화를 참조하세요.
terraform init -
main.tf파일에서 리소스를 프로비저닝합니다. 자세한 내용은 Terraform으로 인프라 프로비저닝을 참조하세요.-
terraform plan을 실행하여 테라폼 실행 계획을 생성하여 제안된 작업을 미리 볼 수 있습니다.terraform plan -
terraform apply을 실행하여 플랜에 정의된 리소스를 만듭니다.terraform apply
-
API를 사용하여 권한 작성
대상 서비스에 대한 소스 서비스 액세스의 권한을 부여하려면 IAM 정책 관리 API를 사용하십시오. type=authorization을 지정하여 정책 작성 메소드에 대한 다음 API 예를 참조하십시오.
정책 작성 정책에 대한 지원되는 속성은 각 서비스에서 지원하는 항목에 따라 달라집니다. 각 서비스에 대해 지원되는 속성에 대한 자세한 정보는 사용 중인 서비스에 대한 문서를 참조하십시오.
curl --request POST \
--url https://iam.cloud.ibm.com/v1/policies \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"type": "authorization",
"subjects": [
{
"attributes": [
{
"name": "accountId",
"value": "<account-id>"
},
{
"name": "serviceName",
"value": "<service-name>"
},
{
"name": "serviceInstance",
"value": "<instance-id>"
}
]
}
],
"roles": [
{
"role_id": "crn:v1:bluemix:public:iam::::serviceRole:Reader"
}
],
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "<account-id>"
},
{
"name": "serviceName",
"value": "<service-name>"
},
{
"name": "serviceInstance",
"value": "<instance-id>"
},
{
"name": "resourceType",
"value": "<resource-type>"
},
{
"name": "resource",
"value": "<id>"
}
]
}
]
}'
SubjectAttribute accountSubjectAttribute = new SubjectAttribute.Builder()
.name("accountId")
.value(exampleAccountId)
.build();
SubjectAttribute serviceNameSubjectAttribute = new SubjectAttribute.Builder()
.name("serviceName")
.value(exampleSourceServiceName)
.build();
SubjectAttribute serviceInstanceSubjectAttribute = new SubjectAttribute.Builder()
.name("serviceInstance")
.value(exampleSourceServiceInstanceId)
.build();
PolicySubject policySubjects = new PolicySubject.Builder()
.addAttributes(accountSubjectAttribute)
.addAttributes(serviceNameSubjectAttribute)
.addAttributes(serviceInstanceSubjectAttribute)
.build();
PolicyRole policyRoles = new PolicyRole.Builder()
.roleId("crn:v1:bluemix:public:iam::::serviceRole:Reader")
.build();
ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
.name("accountId")
.value(exampleAccountId)
.operator("stringEquals")
.build();
ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
.name("serviceName")
.value(exampleTargetServiceName)
.operator("stringEquals")
.build();
ResourceAttribute serviceInstanceResourceAttribute = new ResourceAttribute.Builder()
.name("serviceInstance")
.value(exampleTargetInstanceId)
.operator("stringEquals")
.build();
ResourceAttribute resourceTypeResourceAttribute = new ResourceAttribute.Builder()
.name("resourceType")
.value(exampleResourceType)
.operator("stringEquals")
.build();
ResourceAttribute resourceResourceAttribute = new ResourceAttribute.Builder()
.name("resource")
.value(exampleResourceId)
.operator("stringEquals")
.build();
PolicyResource policyResources = new PolicyResource.Builder()
.addAttributes(accountIdResourceAttribute)
.addAttributes(serviceNameResourceAttribute)
.addAttributes(serviceInstanceResourceAttribute)
.addAttributes(resourceTypeResourceAttribute)
.addAttributes(resourceResourceAttribute)
.build();
CreatePolicyOptions options = new CreatePolicyOptions.Builder()
.type("authorization")
.subjects(Arrays.asList(policySubjects))
.roles(Arrays.asList(policyRoles))
.resources(Arrays.asList(policyResources))
.build();
Response<Policy> response = service.createPolicy(options).execute();
Policy policy = response.getResult();
System.out.println(policy);
const policySubjects = [
{
attributes: [
{
name: 'accountId',
value: exampleAccounId,
},
{
name: 'serviceName',
value: exampleSourceServiceName,
},
{
name: 'serviceInstance',
value: exampleSourceServiceInstaceId,
},
],
},
];
const policyRoles = [
{
role_id: 'crn:v1:bluemix:public:iam::::serviceRole:Reader',
},
];
const accountIdResourceAttribute = {
name: 'accountId',
value: exampleAccountId,
operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
name: 'serviceName',
value: exampleTargetServiceName,
operator: 'stringEquals',
};
const serviceInstanceResourceAttribute = {
name: 'serviceInstance',
value: exampleTargetServiceInstanceId,
operator: 'stringEquals',
};
const resourceTypeResourceAttribute = {
name: 'resourceType',
value: exampleResourceType,
operator: 'stringEquals',
};
const resourceResourceAttribute = {
name: 'resource',
value: exampleResourceId,
operator: 'stringEquals',
};
const policyResources = [
{
attributes: [
accountIdResourceAttribute,
serviceNameResourceAttribute,
serviceInstanceResourceAttribute,
resourceTypeResourceAttribute,
resourceResourceAttribute,
],
},
];
const params = {
type: 'authorization',
subjects: policySubjects,
roles: policyRoles,
resources: policyResources,
};
iamPolicyManagementService.createPolicy(params)
.then(res => {
examplePolicyId = res.result.id;
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err)
});
policy_subjects = PolicySubject(
attributes=[SubjectAttribute(name='accountId', value=example_account_id),
SubjectAttribute(name='serviceName', value=example_source_service_name),
SubjectAttribute(name='serviceInstance', value=example_source_service_instance_id)])
policy_roles = PolicyRole(
role_id='crn:v1:bluemix:public:iam::::serviceRole:Reader')
account_id_resource_attribute = ResourceAttribute(
name='accountId', value=example_account_id)
service_name_resource_attribute = ResourceAttribute(
name='serviceName', value=example_target_service_name)
service_instance_resource_attribute = ResourceAttribute(
name='serviceInstance', value=example_target_service_instance_id)
resource_type_resource_attribute = ResourceAttribute(
name='resourceType', value=example_resource_type)
resource_resource_attribute = ResourceAttribute(
name='resource', value=example_resource_id)
policy_resources = PolicyResource(
attributes=[account_id_resource_attribute,
service_name_resource_attribute,
service_instance_resource_attribute,
resource_type_resource_attribute,
resource_resource_attribute])
policy = iam_policy_management_service.create_policy(
type='authorization',
subjects=[policy_subjects],
roles=[policy_roles],
resources=[policy_resources]
).get_result()
print(json.dumps(policy, indent=2))
accountSubjectAttribute := &iampolicymanagementv1.SubjectAttribute{
Name: core.StringPtr("accountId"),
Value: &exampleAccountID,
}
serviceNameSubjectAttribute := &iampolicymanagementv1.SubjectAttribute{
Name: core.StringPtr("serviceName"),
Value: &exampleSourceServiceName,
}
serviceInstanceSubjectAttribute := &iampolicymanagementv1.SubjectAttribute{
Name: core.StringPtr("serviceInstance"),
Value: &exampleSourceServiceInstanceId,
}
policySubjects := &iampolicymanagementv1.PolicySubject{
Attributes: []iampolicymanagementv1.SubjectAttribute{*accountSubjectAttribute,
*serviceNameSubjectAttribute, *serviceInstanceSubjectAttribute},
}
policyRoles := &iampolicymanagementv1.PolicyRole{
RoleID: core.StringPtr("crn:v1:bluemix:public:iam::::serviceRole:Reader"),
}
accountIDResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
Name: core.StringPtr("accountId"),
Value: core.StringPtr(exampleAccountID),
Operator: core.StringPtr("stringEquals"),
}
serviceNameResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
Name: core.StringPtr("serviceName"),
Value: core.StringPtr(exampleTargetServiceName),
Operator: core.StringPtr("stringEquals"),
}
serviceInstanceResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
Name: core.StringPtr("serviceInstance"),
Value: core.StringPtr(exampleTargetServiceInstanceId),
Operator: core.StringPtr("stringEquals"),
}
resourceTypeResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
Name: core.StringPtr("resourceType"),
Value: core.StringPtr(exampleResourceType),
Operator: core.StringPtr("stringEquals"),
}
resourceResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
Name: core.StringPtr("resource"),
Value: core.StringPtr(exampleResourceId),
Operator: core.StringPtr("stringEquals"),
}
policyResources := &iampolicymanagementv1.PolicyResource{
Attributes: []iampolicymanagementv1.ResourceAttribute{
*accountIDResourceAttribute, *serviceNameResourceAttribute,
*serviceInstanceResourceAttribute, *resourceTypeResourceAttribute,
*resourceResourceAttribute},
}
options := iamPolicyManagementService.NewCreatePolicyOptions(
"authorization",
[]iampolicymanagementv1.PolicySubject{*policySubjects},
[]iampolicymanagementv1.PolicyRole{*policyRoles},
[]iampolicymanagementv1.PolicyResource{*policyResources},
)
policy, response, err := iamPolicyManagementService.CreatePolicy(options)
if err != nil {
panic(err)
}
b, _ := json.MarshalIndent(policy, "", " ")
fmt.Println(string(b))
모든 서비스가 resourceType 및 개별 resource 레벨의 정책을 지원하는 것은 아닙니다. 이러한 속성을 지원하는 서비스의 예는 IBM Cloud Object Storage 및 IBM Key Protect입니다. 여기서 버킷과 키는 리소스 유형이고 특정 리소스를 지정하기 위해 ID가 나열됩니다.
resource-group 을 사용하는 인증 만들기 resourceType
resource-group 을 소스 또는 대상으로 사용하는 인증을 만들려면 IAM 정책 관리 API를 사용합니다.
resource-group 를 소스로
resource-group 을 소스로 지정하여 정책 메서드를 만들려면 다음 API 예제를 참조하세요.
{
"type": "authorization",
"subjects": [
{
"attributes": [
{
"name": "resourceGroupId",
"value": "<rgId>"
},
{
"name": "accountId",
"value": "<sourceAccountId>"
}
]
}
],
"roles": [
{
"role_id": "crn:v1:bluemix:public:iam::::role:Viewer"
}
],
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "<targetAccountId>"
},
{
"name": "serviceName",
"value": "<targetService>"
},
{
"name": "serviceInstance",
"value": "<targetServiceInstance>"
}
]
}
]
}
resource-group 를 대상으로
resource-group 을 대상으로 지정하여 정책 메서드를 만들려면 다음 API 예제를 참조하세요.
{
"type": "authorization",
"subjects": [
{
"attributes": [
{
"name": "accountId",
"value": "<sourceAccountId>"
},
{
"name": "serviceName",
"value": "<sourceService>"
},
{
"name": "serviceInstance",
"value": "<sourceServiceInstance>"
}
]
}
],
"roles": [
{
"role_id": "crn:v1:bluemix:public:iam::::role:Viewer"
}
],
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "<targetAccountId>"
},
{
"name": "resourceType",
"value": "resource-group"
}
]
}
]
}
콘솔에서 권한 제거
대상 서비스에 대해 관리자 역할이 지정된 경우에는 계정 내 서비스 간의 권한 부여를 제거할 수 있습니다. 종속 서비스에 대해 소스 서비스에서 작성한 액세스 정책을 제거하면 소스 서비스가 워크플로우를 완료하거나 대상 서비스에 액세스할 수 없습니다.
- IBM Cloud 콘솔에서 관리 > **액세스(IAM)**를 클릭하고 권한을 선택하십시오.
- 계정에서 제거하려는 권한에 대한 행을 식별하십시오.
- 조치 아이콘
> 제거를 클릭하십시오.
- 제거를 선택하십시오.
소스 서비스가 계정에서 제거되면 해당 서비스가 종속 서비스에 대해 작성한 모든 정책이 자동으로 삭제됩니다. 마찬가지로, 종속 서비스가 계정에서 제거되면 해당 서비스에 위임된 모든 액세스 정책 또한 삭제됩니다.
CLI를 사용하여 권한 제거
대상 서비스에 대해 관리자 역할이 지정된 경우에는 계정 내 서비스 간의 권한 부여를 제거할 수 있습니다. 종속 서비스에 대해 소스 서비스에서 작성한 액세스 정책을 제거하면 소스 서비스가 워크플로우를 완료하거나 대상 서비스에 액세스할 수 없습니다.
대상 서비스에 액세스할 수 있도록 소스 서비스에 권한을 부여하려면 ibmcloud iam authorization-policy-create 명령을 실행하십시오.
다음 샘플은 권한 정책을 삭제합니다.
ibmcloud iam authorization-policy-delete 12345678-abcd-1a2b-a1b2-1234567890ab
이 명령에 사용할 수 있는 모든 매개변수에 대한 자세한 정보는 ibmcloud iam authorization-policy-delete를 참조하십시오.
소스 서비스가 계정에서 제거되면 해당 서비스가 종속 서비스에 대해 작성한 모든 정책이 자동으로 삭제됩니다. 마찬가지로, 종속 서비스가 계정에서 제거되면 해당 서비스에 위임된 모든 액세스 정책 또한 삭제됩니다.
API를 사용하여 권한 제거
대상 서비스에 대해 관리자 역할이 지정된 경우에는 계정 내 서비스 간의 권한 부여를 제거할 수 있습니다. 종속 서비스에 대해 소스 서비스에서 작성한 액세스 정책을 제거하면 소스 서비스가 워크플로우를 완료하거나 대상 서비스에 액세스할 수 없습니다.
권한 정책을 삭제하려면 다음 샘플 요청에 표시된 대로 IAM 정책 관리 API를 사용하십시오.
curl -X DELETE 'https://iam.cloud.ibm.com/v1/policies/$POLICY_ID' \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json'
DeletePolicyOptions options = new DeletePolicyOptions.Builder()
.policyId(examplePolicyId)
.build();
service.deletePolicy(options).execute();
const params = {
policyId: examplePolicyId,
};
iamPolicyManagementService.deletePolicy(params)
.then(res => {
console.log(JSON.stringify(res, null, 2));
})
.catch(err => {
console.warn(err)
});
response = iam_policy_management_service.delete_policy(
policy_id=example_policy_id
).get_result()
print(json.dumps(response, indent=2))
options := iamPolicyManagementService.NewDeletePolicyOptions(
examplePolicyID,
)
response, err := iamPolicyManagementService.DeletePolicy(options)
if err != nil {
panic(err)
}
소스 서비스가 계정에서 제거되면 해당 서비스가 종속 서비스에 대해 작성한 모든 정책이 자동으로 삭제됩니다. 마찬가지로, 종속 서비스가 계정에서 제거되면 해당 서비스에 위임된 모든 액세스 정책 또한 삭제됩니다.
Terraform을 사용하여 권한 제거하기
Terraform을 사용하여 권한을 제거하려면 main.tf 파일에서 인수를 삭제해야 합니다. 인수를 삭제한 후 다음 단계에 따라 파일을 프로비저닝합니다:
-
terraform plan을 실행하여 테라폼 실행 계획을 생성하여 제안된 작업을 미리 볼 수 있습니다.terraform plan -
terraform apply을 실행하여 플랜에 정의된 리소스를 만듭니다.terraform apply