fix(cloudid): cloud policy sync (#21173)

This commit is contained in:
屈轩
2024-09-06 11:48:57 +08:00
committed by GitHub
parent e4fc059588
commit 3af492417f
18 changed files with 74 additions and 120 deletions
+2 -2
View File
@@ -89,12 +89,12 @@ require (
k8s.io/cluster-bootstrap v0.19.3
k8s.io/cri-api v0.22.17
moul.io/http2curl/v2 v2.3.0
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240827090454-97d9840e0939
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240906024748-a9bd6344aaf8
yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32
yunion.io/x/jsonutils v1.0.1-0.20240203102553-4096f103b401
yunion.io/x/log v1.0.1-0.20240305175729-7cf2d6cd5a91
yunion.io/x/ovsdb v0.0.0-20230306173834-f164f413a900
yunion.io/x/pkg v1.10.1-0.20240826001854-ac73b70d75b7
yunion.io/x/pkg v1.10.1-0.20240905110705-77c46e716318
yunion.io/x/s3cli v0.0.0-20190917004522-13ac36d8687e
yunion.io/x/sqlchemy v1.1.3-0.20240831153043-4030cea8d4b9
yunion.io/x/structarg v0.0.0-20231017124457-df4d5009457c
+4 -4
View File
@@ -1214,8 +1214,8 @@ sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240827090454-97d9840e0939 h1:U30w5KcxiGXUnjCEauW7Wnf459TfwcxgitvDTRKzLMA=
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240827090454-97d9840e0939/go.mod h1:iLoBHVR2Eur/1WJSGcbZaEwpzh/iqXvbFCsX9/xt8CI=
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240906024748-a9bd6344aaf8 h1:lSB6Gm2QmAYZozENmA1AjwbM3/nQaEA6F3ZSVDhC+rw=
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240906024748-a9bd6344aaf8/go.mod h1:iLoBHVR2Eur/1WJSGcbZaEwpzh/iqXvbFCsX9/xt8CI=
yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32 h1:v7POYkQwo1XzOxBoIoRVr/k0V9Y5JyjpshlIFa9raug=
yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws=
yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634=
@@ -1229,8 +1229,8 @@ yunion.io/x/ovsdb v0.0.0-20230306173834-f164f413a900 h1:Hu/4ERvoWaN6aiFs4h4/yvVB
yunion.io/x/ovsdb v0.0.0-20230306173834-f164f413a900/go.mod h1:0vLkNEhlmA64HViPBAnSTUMrx5QP1CLsxXmxDKQ80tc=
yunion.io/x/pkg v0.0.0-20190620104149-945c25821dbf/go.mod h1:t6rEGG2sQ4J7DhFxSZVOTjNd0YO/KlfWQyK1W4tog+E=
yunion.io/x/pkg v0.0.0-20190628082551-f4033ba2ea30/go.mod h1:t6rEGG2sQ4J7DhFxSZVOTjNd0YO/KlfWQyK1W4tog+E=
yunion.io/x/pkg v1.10.1-0.20240826001854-ac73b70d75b7 h1:ceNLYp6CKYccbFw/ug9ohSaUbEk5THipaA4K+SAHEKc=
yunion.io/x/pkg v1.10.1-0.20240826001854-ac73b70d75b7/go.mod h1:0Bwxqd9MA3ACi119/l02FprY/o9gHahmYC2bsSbnVpM=
yunion.io/x/pkg v1.10.1-0.20240905110705-77c46e716318 h1:Fm7I8ypXHxeObY4u/VUGz78NsambemzTZ9fECyGKNi8=
yunion.io/x/pkg v1.10.1-0.20240905110705-77c46e716318/go.mod h1:0Bwxqd9MA3ACi119/l02FprY/o9gHahmYC2bsSbnVpM=
yunion.io/x/s3cli v0.0.0-20190917004522-13ac36d8687e h1:v+EzIadodSwkdZ/7bremd7J8J50Cise/HCylsOJngmo=
yunion.io/x/s3cli v0.0.0-20190917004522-13ac36d8687e/go.mod h1:0iFKpOs1y4lbCxeOmq3Xx/0AcQoewVPwj62eRluioEo=
yunion.io/x/sqlchemy v1.1.3-0.20240831153043-4030cea8d4b9 h1:vJSHj5jalKW7Vx5dqPmdI/jmpqMxR6nqHHtZSTQUZYM=
+5 -5
View File
@@ -247,8 +247,8 @@ func (base SProviderBaseProviderDriver) RequestSyncCloudproviderResources(ctx co
}()
func() {
lockman.LockRawObject(ctx, account.Id, models.SAMLProviderManager.Keyword())
defer lockman.ReleaseRawObject(ctx, account.Id, models.SAMLProviderManager.Keyword())
lockman.LockRawObject(ctx, cp.Id, models.SAMLProviderManager.Keyword())
defer lockman.ReleaseRawObject(ctx, cp.Id, models.SAMLProviderManager.Keyword())
samls, err := provider.GetICloudSAMLProviders()
if err != nil {
@@ -456,8 +456,8 @@ func (base SProviderBaseProviderDriver) RequestCreateSAMLProvider(ctx context.Co
}
for i := range providers {
err = func() error {
lockman.LockRawObject(ctx, account.Id, models.SAMLProviderManager.Keyword())
defer lockman.ReleaseRawObject(ctx, account.Id, models.SAMLProviderManager.Keyword())
lockman.LockRawObject(ctx, providers[i].Id, models.SAMLProviderManager.Keyword())
defer lockman.ReleaseRawObject(ctx, providers[i].Id, models.SAMLProviderManager.Keyword())
samlProviders, err := providers[i].GetSamlProviders()
if err != nil {
@@ -589,7 +589,7 @@ func (base SProviderBaseProviderDriver) RequestCreateRoleForSamlUser(ctx context
return errors.Wrapf(err, "GetProvider")
}
opts := &cloudprovider.SRoleCreateOptions{
Name: fmt.Sprintf("%s-%s", user.Name, group.Name),
Name: fmt.Sprintf("%s-%s", group.Name, utils.GenRequestId(5)),
Desc: fmt.Sprintf("auto create by cloudpods"),
SAMLProvider: samlProvider.ExternalId,
}
+1 -25
View File
@@ -27,7 +27,6 @@ import (
"yunion.io/x/pkg/tristate"
"yunion.io/x/onecloud/pkg/apis"
api "yunion.io/x/onecloud/pkg/apis/cloudid"
"yunion.io/x/onecloud/pkg/cloudcommon/db"
"yunion.io/x/onecloud/pkg/cloudcommon/db/taskman"
"yunion.io/x/onecloud/pkg/cloudid/options"
@@ -109,31 +108,8 @@ func (self *SCloudaccount) GetDriver() (IProviderDriver, error) {
return GetProviderDriver(self.Provider)
}
func (self *SCloudaccount) GetCloudpolicies() ([]SCloudpolicy, error) {
func (self *SCloudaccount) GetCloudpolicies(managerId string) ([]SCloudpolicy, error) {
q := CloudpolicyManager.Query().Equals("cloudaccount_id", self.Id)
policies := []SCloudpolicy{}
err := db.FetchModelObjects(CloudpolicyManager, q, &policies)
if err != nil {
return nil, errors.Wrap(err, "db.FetchModelObjects")
}
return policies, nil
}
func (self *SCloudaccount) GetSystemCloudpolicies(managerId string) ([]SCloudpolicy, error) {
q := CloudpolicyManager.Query().Equals("cloudaccount_id", self.Id).Equals("policy_type", api.CLOUD_POLICY_TYPE_SYSTEM)
if len(managerId) > 0 {
q = q.Equals("manager_id", managerId)
}
policies := []SCloudpolicy{}
err := db.FetchModelObjects(CloudpolicyManager, q, &policies)
if err != nil {
return nil, errors.Wrap(err, "db.FetchModelObjects")
}
return policies, nil
}
func (self *SCloudaccount) GetCustomCloudpolicies(managerId string) ([]SCloudpolicy, error) {
q := CloudpolicyManager.Query().Equals("cloudaccount_id", self.Id).Equals("policy_type", api.CLOUD_POLICY_TYPE_CUSTOM)
if len(managerId) > 0 {
q = q.Equals("manager_id", managerId)
}
+4 -26
View File
@@ -17,6 +17,7 @@ package models
import (
"context"
"database/sql"
"fmt"
"gopkg.in/fatih/set.v0"
@@ -382,26 +383,6 @@ func (self *SCloudgroup) GetCloudpolicies() ([]SCloudpolicy, error) {
return policies, nil
}
func (self *SCloudgroup) GetSystemCloudpolicies() ([]SCloudpolicy, error) {
policies := []SCloudpolicy{}
q := self.GetCloudpolicyQuery().Equals("policy_type", api.CLOUD_POLICY_TYPE_SYSTEM)
err := db.FetchModelObjects(CloudpolicyManager, q, &policies)
if err != nil {
return nil, errors.Wrap(err, "db.FetchModelObjects")
}
return policies, nil
}
func (self *SCloudgroup) GetCustomCloudpolicies() ([]SCloudpolicy, error) {
policies := []SCloudpolicy{}
q := self.GetCloudpolicyQuery().Equals("policy_type", api.CLOUD_POLICY_TYPE_CUSTOM)
err := db.FetchModelObjects(CloudpolicyManager, q, &policies)
if err != nil {
return nil, errors.Wrap(err, "db.FetchModelObjects")
}
return policies, nil
}
func (self *SCloudgroup) GetCloudpolicy(policyId string) (*SCloudpolicy, error) {
policies := []SCloudpolicy{}
q := self.GetCloudpolicyQuery().Equals("id", policyId)
@@ -773,8 +754,8 @@ func (self *SCloudgroup) attachPolicy(policyId string) error {
}
func (self *SCloudaccount) SyncCloudgroups(ctx context.Context, userCred mcclient.TokenCredential, iGroups []cloudprovider.ICloudgroup, managerId string) ([]SCloudgroup, []cloudprovider.ICloudgroup, compare.SyncResult) {
lockman.LockRawObject(ctx, CloudgroupManager.Keyword(), self.Id)
defer lockman.ReleaseRawObject(ctx, CloudgroupManager.Keyword(), self.Id)
lockman.LockRawObject(ctx, CloudgroupManager.Keyword(), fmt.Sprintf("%s-%s", self.Id, managerId))
defer lockman.ReleaseRawObject(ctx, CloudgroupManager.Keyword(), fmt.Sprintf("%s-%s", self.Id, managerId))
result := compare.SyncResult{}
dbGroups, err := self.GetCloudgroups(managerId)
@@ -889,9 +870,6 @@ func (group *SCloudgroup) SyncWithCloudgroup(ctx context.Context, userCred mccli
}
func (self *SCloudaccount) newCloudgroup(ctx context.Context, userCred mcclient.TokenCredential, iGroup cloudprovider.ICloudgroup, managerId string) (*SCloudgroup, error) {
lockman.LockObject(ctx, self)
defer lockman.ReleaseObject(ctx, self)
group := &SCloudgroup{}
group.SetModelManager(CloudgroupManager, group)
group.Name = iGroup.GetName()
@@ -1016,7 +994,7 @@ func (self *SCloudgroup) SyncPolicies(ctx context.Context, userCred mcclient.Tok
return q.Equals("cloudaccount_id", self.CloudaccountId)
})
if err != nil {
result.AddError(errors.Wrapf(err, "add %s", added[i].GetName()))
result.AddError(errors.Wrapf(err, "add %s(%s)", added[i].GetName(), added[i].GetGlobalId()))
continue
}
err = self.attachPolicy(policy.GetId())
+13 -9
View File
@@ -313,14 +313,18 @@ func (manager *SCloudpolicyManager) FetchCustomizeColumns(
func (self *SCloudpolicy) SyncWithCloudpolicy(ctx context.Context, userCred mcclient.TokenCredential, iPolicy cloudprovider.ICloudpolicy) error {
_, err := db.Update(self, func() error {
self.Name = iPolicy.GetName()
self.Description = iPolicy.GetDescription()
if self.PolicyType == api.CLOUD_POLICY_TYPE_CUSTOM || len(self.Description) == 0 {
self.Description = iPolicy.GetDescription()
}
self.Status = apis.STATUS_AVAILABLE
self.IsPublic = true
doc, err := iPolicy.GetDocument()
if err != nil {
return errors.Wrapf(err, "GetDocument")
if self.PolicyType == api.CLOUD_POLICY_TYPE_CUSTOM || gotypes.IsNil(self.Document) {
doc, err := iPolicy.GetDocument()
if err != nil {
return errors.Wrapf(err, "GetDocument")
}
self.Document = doc
}
self.Document = doc
return nil
})
if err != nil {
@@ -330,9 +334,6 @@ func (self *SCloudpolicy) SyncWithCloudpolicy(ctx context.Context, userCred mccl
}
func (self *SCloudaccount) newCloudpolicy(ctx context.Context, userCred mcclient.TokenCredential, iPolicy cloudprovider.ICloudpolicy, managerId string) (*SCloudpolicy, error) {
lockman.LockObject(ctx, self)
defer lockman.ReleaseObject(ctx, self)
policy := &SCloudpolicy{}
policy.SetModelManager(CloudpolicyManager, policy)
doc, err := iPolicy.GetDocument()
@@ -352,6 +353,9 @@ func (self *SCloudaccount) newCloudpolicy(ctx context.Context, userCred mcclient
}
func (self *SCloudaccount) SyncPolicies(ctx context.Context, userCred mcclient.TokenCredential, iPolicies []cloudprovider.ICloudpolicy, managerId string) compare.SyncResult {
lockman.LockRawObject(ctx, CloudproviderManager.Keyword(), managerId)
defer lockman.ReleaseRawObject(ctx, CloudproviderManager.Keyword(), managerId)
result := compare.SyncResult{}
removed := make([]SCloudpolicy, 0)
@@ -359,7 +363,7 @@ func (self *SCloudaccount) SyncPolicies(ctx context.Context, userCred mcclient.T
commonext := make([]cloudprovider.ICloudpolicy, 0)
added := make([]cloudprovider.ICloudpolicy, 0)
dbPolicies, err := self.GetCloudpolicies()
dbPolicies, err := self.GetCloudpolicies(managerId)
if err != nil {
result.Error(errors.Wrapf(err, "GetCloudpolicies"))
return result
+3 -22
View File
@@ -17,6 +17,7 @@ package models
import (
"context"
"database/sql"
"fmt"
"gopkg.in/fatih/set.v0"
@@ -669,26 +670,6 @@ func (self *SClouduser) GetCloudpolicies() ([]SCloudpolicy, error) {
return policies, nil
}
func (self *SClouduser) GetSystemCloudpolicies() ([]SCloudpolicy, error) {
policies := []SCloudpolicy{}
q := self.GetCloudpolicyQuery().Equals("policy_type", api.CLOUD_POLICY_TYPE_SYSTEM)
err := db.FetchModelObjects(CloudpolicyManager, q, &policies)
if err != nil {
return nil, errors.Wrap(err, "db.FetchModelObjects")
}
return policies, nil
}
func (self *SClouduser) GetCustomCloudpolicies() ([]SCloudpolicy, error) {
policies := []SCloudpolicy{}
q := self.GetCloudpolicyQuery().Equals("policy_type", api.CLOUD_POLICY_TYPE_CUSTOM)
err := db.FetchModelObjects(CloudpolicyManager, q, &policies)
if err != nil {
return nil, errors.Wrap(err, "db.FetchModelObjects")
}
return policies, nil
}
func (self *SClouduser) joinGroup(groupId string) error {
gu := &SCloudgroupUser{}
gu.SetModelManager(CloudgroupUserManager, gu)
@@ -1142,8 +1123,8 @@ func (self *SCloudaccount) SyncCloudusers(
iUsers []cloudprovider.IClouduser,
managerId string,
) ([]SClouduser, []cloudprovider.IClouduser, compare.SyncResult) {
lockman.LockRawObject(ctx, ClouduserManager.Keyword(), self.Id)
defer lockman.ReleaseRawObject(ctx, ClouduserManager.Keyword(), self.Id)
lockman.LockRawObject(ctx, ClouduserManager.Keyword(), fmt.Sprintf("%s-%s", self.Id, managerId))
defer lockman.ReleaseRawObject(ctx, ClouduserManager.Keyword(), fmt.Sprintf("%s-%s", self.Id, managerId))
result := compare.SyncResult{}
dbUsers, err := self.GetCloudusers(managerId)
+1 -1
View File
@@ -60,7 +60,7 @@ func (d *SAWSSAMLDriver) GetIdpInitiatedLoginData(ctx context.Context, userCred
{
name: "https://aws.amazon.com/SAML/Attributes/RoleSessionName",
friendlyName: "RoleSessionName",
value: userCred.GetUserId(),
value: userCred.GetUserName(),
},
{
name: "urn:oid:1.3.6.1.4.1.5923.1.1.1.3",
+1 -1
View File
@@ -60,7 +60,7 @@ func (d *SAWSCNSAMLDriver) GetIdpInitiatedLoginData(ctx context.Context, userCre
{
name: "https://aws.amazon.com/SAML/Attributes/RoleSessionName",
friendlyName: "RoleSessionName",
value: userCred.GetUserId(),
value: userCred.GetUserName(),
},
{
name: "urn:oid:1.3.6.1.4.1.5923.1.1.1.3",
@@ -36,7 +36,7 @@ var (
)
func init() {
CloudaccountSyncWorkerManager = appsrv.NewWorkerManager("CloudaccountSyncWorkerManager", 10, 1024, false)
CloudaccountSyncWorkerManager = appsrv.NewWorkerManager("CloudaccountSyncWorkerManager", 20, 1024, false)
taskman.RegisterTaskAndWorker(CloudaccountSyncResourcesTask{}, CloudaccountSyncWorkerManager)
}
@@ -36,7 +36,7 @@ var (
)
func init() {
CloudproviderSyncWorkerManager = appsrv.NewWorkerManager("CloudproviderSyncWorkerManager", 10, 1024, false)
CloudproviderSyncWorkerManager = appsrv.NewWorkerManager("CloudproviderSyncWorkerManager", 30, 1024, false)
taskman.RegisterTaskAndWorker(CloudproviderSyncResourcesTask{}, CloudproviderSyncWorkerManager)
}
+2 -2
View File
@@ -1489,7 +1489,7 @@ sigs.k8s.io/structured-merge-diff/v4/value
# sigs.k8s.io/yaml v1.2.0
## explicit; go 1.12
sigs.k8s.io/yaml
# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240827090454-97d9840e0939
# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240906024748-a9bd6344aaf8
## explicit; go 1.18
yunion.io/x/cloudmux/pkg/apis
yunion.io/x/cloudmux/pkg/apis/billing
@@ -1586,7 +1586,7 @@ yunion.io/x/log/hooks
yunion.io/x/ovsdb/cli_util
yunion.io/x/ovsdb/schema/ovn_nb
yunion.io/x/ovsdb/types
# yunion.io/x/pkg v1.10.1-0.20240826001854-ac73b70d75b7
# yunion.io/x/pkg v1.10.1-0.20240905110705-77c46e716318
## explicit; go 1.18
yunion.io/x/pkg/appctx
yunion.io/x/pkg/errors
-9
View File
@@ -133,15 +133,6 @@ func (cli *SAwsClient) getIamArn(arn string) string {
}
}
func (cli *SAwsClient) getIamCommonArn(arn string) string {
switch cli.GetAccessEnv() {
case api.CLOUD_ACCESS_ENV_AWS_GLOBAL:
return strings.TrimPrefix(arn, AWS_GLOBAL_ARN_PREFIX)
default:
return strings.TrimPrefix(arn, AWS_CHINA_ARN_PREFIX)
}
}
func GetDefaultRegionId(accessUrl string) string {
defaultRegion := AWS_INTERNATIONAL_DEFAULT_REGION
switch accessUrl {
+23 -2
View File
@@ -74,11 +74,11 @@ func (self *SGroup) GetICloudusers() ([]cloudprovider.IClouduser, error) {
}
func (self *SGroup) AttachPolicy(policyId string, policyType api.TPolicyType) error {
return self.client.AttachGroupPolicy(self.GroupName, self.client.getIamArn(policyId))
return self.client.AttachGroupPolicy(self.GroupName, policyId)
}
func (self *SGroup) DetachPolicy(policyId string, policyType api.TPolicyType) error {
return self.client.DetachGroupPolicy(self.GroupName, self.client.getIamArn(policyId))
return self.client.DetachGroupPolicy(self.GroupName, policyId)
}
func (self *SGroup) Delete() error {
@@ -109,6 +109,26 @@ func (self *SGroup) ListPolicies() ([]SAttachedPolicy, error) {
return policies, nil
}
func (self *SGroup) ListGroupPolicies() ([]SPolicy, error) {
policies := []SPolicy{}
offset := ""
for {
part, err := self.client.ListGroupPolicies(self.GroupName, offset, 1000)
if err != nil {
return nil, errors.Wrapf(err, "ListGroupPolicies")
}
for i := range part.Policies {
part.Policies[i].client = self.client
policies = append(policies, part.Policies[i])
}
offset = part.Marker
if len(offset) == 0 || !part.IsTruncated {
break
}
}
return policies, nil
}
func (self *SGroup) GetICloudpolicies() ([]cloudprovider.ICloudpolicy, error) {
policies, err := self.ListPolicies()
if err != nil {
@@ -182,6 +202,7 @@ func (self *SAwsClient) CreateGroup(name string, path string) (*SGroup, error) {
if err != nil {
return nil, errors.Wrap(err, "iamRequest.CreateGroup")
}
group.Group.client = self
return &group.Group, nil
}
+4 -4
View File
@@ -56,7 +56,7 @@ func (self *SPolicy) GetName() string {
}
func (self *SPolicy) GetGlobalId() string {
return self.client.getIamCommonArn(self.Arn)
return self.Arn
}
func (self *SPolicy) GetPolicyType() cloudid.TPolicyType {
@@ -127,7 +127,7 @@ func (self *SAwsClient) GetICloudpolicies() ([]cloudprovider.ICloudpolicy, error
ret := []cloudprovider.ICloudpolicy{}
marker := ""
for {
part, err := self.ListPolicies(marker, 1000, false, "", "PermissionsPolicy", "AWS")
part, err := self.ListPolicies(marker, 1000, false, "", "", "AWS")
if err != nil {
return nil, errors.Wrapf(err, "ListPolicies")
}
@@ -143,7 +143,7 @@ func (self *SAwsClient) GetICloudpolicies() ([]cloudprovider.ICloudpolicy, error
}
for {
part, err := self.ListPolicies(marker, 1000, false, "", "PermissionsPolicy", "Local")
part, err := self.ListPolicies(marker, 1000, false, "", "", "Local")
if err != nil {
return nil, errors.Wrapf(err, "ListPolicies")
}
@@ -230,7 +230,7 @@ type SAttachedPolicy struct {
}
func (self *SAttachedPolicy) GetGlobalId() string {
return self.client.getIamCommonArn(self.PolicyArn)
return self.PolicyArn
}
func (self *SAttachedPolicy) GetName() string {
+3 -3
View File
@@ -70,7 +70,7 @@ func (self *SRole) GetDocument() *jsonutils.JSONDict {
return document.(*jsonutils.JSONDict)
}
//[{"Action":"sts:AssumeRoleWithSAML","Condition":{"StringEquals":{"SAML:aud":"https://signin.aws.amazon.com/saml"}},"Effect":"Allow","Principal":{"Federated":"arn:aws:iam::879324515906:saml-provider/quxuan"}}]
// [{"Action":"sts:AssumeRoleWithSAML","Condition":{"StringEquals":{"SAML:aud":"https://signin.aws.amazon.com/saml"}},"Effect":"Allow","Principal":{"Federated":"arn:aws:iam::879324515906:saml-provider/quxuan"}}]
func (self *SRole) GetSAMLProvider() string {
document := self.GetDocument()
if document != nil {
@@ -90,11 +90,11 @@ func (self *SRole) GetSAMLProvider() string {
}
func (self *SRole) AttachPolicy(id string, policyType cloudid.TPolicyType) error {
return self.client.AttachRolePolicy(self.RoleName, self.client.getIamArn(id))
return self.client.AttachRolePolicy(self.RoleName, id)
}
func (self *SRole) DetachPolicy(id string, polityType cloudid.TPolicyType) error {
return self.client.DetachRolePolicy(self.RoleName, self.client.getIamArn(id))
return self.client.DetachRolePolicy(self.RoleName, id)
}
func (self *SRole) GetICloudpolicies() ([]cloudprovider.ICloudpolicy, error) {
+2 -2
View File
@@ -53,11 +53,11 @@ func (user *SUser) GetInviteUrl() string {
}
func (user *SUser) AttachPolicy(policyArn string, policyType api.TPolicyType) error {
return user.client.AttachUserPolicy(user.UserName, user.client.getIamArn(policyArn))
return user.client.AttachUserPolicy(user.UserName, policyArn)
}
func (user *SUser) DetachPolicy(policyArn string, policyType api.TPolicyType) error {
return user.client.DetachUserPolicy(user.UserName, user.client.getIamArn(policyArn))
return user.client.DetachUserPolicy(user.UserName, policyArn)
}
func (user *SUser) GetGlobalId() string {
+4 -1
View File
@@ -236,12 +236,15 @@ func (conf *SCloudConfig) UserDataScript() string {
if conf.DisableRoot == 0 {
shells = append(shells, `sed -i "s/.*PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config`)
shells = append(shells, `sed -i "s/.*PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config.d/*.conf`)
}
if conf.SshPwauth == SSH_PASSWORD_AUTH_ON {
shells = append(shells, `sed -i 's/.*PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config`)
shells = append(shells, `sed -i 's/.*PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config.d/*.conf`)
}
if conf.DisableRoot == 0 || conf.SshPwauth == SSH_PASSWORD_AUTH_ON {
shells = append(shells, `systemctl restart sshd`)
// ubuntu24.04 sshd -> ssh
shells = append(shells, `systemctl restart sshd ssh`)
}
for _, pkg := range conf.Packages {