Azure 페더레이션 역할
Azure 페더레이션 역할을 사용하면 Systems Manager가 AWS Security Token Service(AWS STS)에서 웹 자격 증명 토큰을 가져와 OIDC 페더레이션을 통해 Azure 자격 증명으로 교환할 수 있습니다. Automation은 런북 실행 중에 이 역할을 수임하여 Azure 테넌트에 인증합니다. 또한 Systems Manager 서비스는 State Manager 연결이 생성되기 전에 Cloud Connector를 검증하기 위해 이 역할을 직접 수임합니다.
역할 이름 패턴: SSM-AzureRole-connector-name-id8
신뢰 정책에는 두 개의 문이 포함되어 있습니다.
-
첫 번째 문은 고객의 AWS 계정이 역할을 수임하도록 허용하지만, 호출 보안 주체가 Automation 수임 역할 또는 Automation 디스패치 역할이고(
aws:PrincipalArn조건과 일치), 해당 보안 주체에caller=SSM태그가 지정된 경우에만 허용합니다. 보안 주체 ARN이 일치하려면 수임 역할과 디스패치 역할이/service-role/IAM 경로 아래에 있어야 합니다. -
두 번째 문은 Systems Manager 서비스 보안 주체가 역할을 직접 수임할 수 있도록 허용합니다.
aws:SourceAccount및aws:SourceArn조건은 신뢰 범위를 사용자의 AWS 계정 및 Cloud Connector ARN으로 제한하여 혼동된 대리자 문제를 방지합니다.
123456789012를 사용자의 AWS 계정 ID로 바꿉니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Condition": { "StringEquals": { "aws:PrincipalTag/caller": "SSM" }, "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::123456789012:role/service-role/SSM-AzureAssumeRole*", "arn:aws:iam::123456789012:role/service-role/SSM-AzureDispatchRole*" ] } } }, { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "Service": "ssm.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:ssm:*:123456789012:cloud-connector/*" } } } ] }
권한 정책을 통해 역할은 Microsoft Entra ID에서 OIDC 페더레이션에 요구하는 대상인 api://AzureADTokenExchange으로 대상이 제한된 웹 자격 증명 토큰을 가져올 수 있습니다.
권한 세부 정보
이 정책에는 다음 권한이 포함되어 있습니다.
-
sts:GetWebIdentityToken- Systems Manager가 Azure 자격 증명으로 교환하기 위해 Microsoft Entra ID에 제시할 수 있는 웹 자격 증명 토큰을 역할이 AWS STS에서 가져올 수 있도록 허용합니다. -
sts:TagGetWebIdentityToken- Systems Manager가 발급된 웹 자격 증명 토큰에 커넥터 ID와 같은 자격 증명 태그를 추가할 수 있도록 허용합니다. 이를 통해 Microsoft Entra ID 페더레이션 규칙의 범위를 특정 Cloud Connector로 제한할 수 있습니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:GetWebIdentityToken", "sts:TagGetWebIdentityToken" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "sts:IdentityTokenAudience": [ "api://AzureADTokenExchange" ] } } } ] }