mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Config: making [aws][external_id] part of env (#72062)
* Config: making [aws][external_id] part of env * Fix go.sum * Add a test
This commit is contained in:
2
go.mod
2
go.mod
@@ -64,7 +64,7 @@ require (
|
|||||||
github.com/gorilla/websocket v1.5.0 // @grafana/grafana-app-platform-squad
|
github.com/gorilla/websocket v1.5.0 // @grafana/grafana-app-platform-squad
|
||||||
github.com/grafana/alerting v0.0.0-20230606080147-55b8d71c7890 // @grafana/alerting-squad-backend
|
github.com/grafana/alerting v0.0.0-20230606080147-55b8d71c7890 // @grafana/alerting-squad-backend
|
||||||
github.com/grafana/cuetsy v0.1.10 // @grafana/grafana-as-code
|
github.com/grafana/cuetsy v0.1.10 // @grafana/grafana-as-code
|
||||||
github.com/grafana/grafana-aws-sdk v0.16.1 // @grafana/aws-datasources
|
github.com/grafana/grafana-aws-sdk v0.18.0 // @grafana/aws-datasources
|
||||||
github.com/grafana/grafana-azure-sdk-go v1.7.0 // @grafana/backend-platform
|
github.com/grafana/grafana-azure-sdk-go v1.7.0 // @grafana/backend-platform
|
||||||
github.com/grafana/grafana-plugin-sdk-go v0.171.0 // @grafana/plugins-platform-backend
|
github.com/grafana/grafana-plugin-sdk-go v0.171.0 // @grafana/plugins-platform-backend
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // @grafana/backend-platform
|
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // @grafana/backend-platform
|
||||||
|
|||||||
2
go.sum
2
go.sum
@@ -1793,6 +1793,8 @@ github.com/grafana/grafana-aws-sdk v0.16.0 h1:FFVab0jvhENce5cMEAodANCa5ARjyObN1d
|
|||||||
github.com/grafana/grafana-aws-sdk v0.16.0/go.mod h1:rCXLYoMpPqF90U7XqgVJ1HIAopFVF0bB3SXBVEJIm3I=
|
github.com/grafana/grafana-aws-sdk v0.16.0/go.mod h1:rCXLYoMpPqF90U7XqgVJ1HIAopFVF0bB3SXBVEJIm3I=
|
||||||
github.com/grafana/grafana-aws-sdk v0.16.1 h1:R/hMtQP7H0+8nWFoIOApaZj0qstmZM+5Pw0rRzk3A3Y=
|
github.com/grafana/grafana-aws-sdk v0.16.1 h1:R/hMtQP7H0+8nWFoIOApaZj0qstmZM+5Pw0rRzk3A3Y=
|
||||||
github.com/grafana/grafana-aws-sdk v0.16.1/go.mod h1:rCXLYoMpPqF90U7XqgVJ1HIAopFVF0bB3SXBVEJIm3I=
|
github.com/grafana/grafana-aws-sdk v0.16.1/go.mod h1:rCXLYoMpPqF90U7XqgVJ1HIAopFVF0bB3SXBVEJIm3I=
|
||||||
|
github.com/grafana/grafana-aws-sdk v0.18.0 h1:cWuJAWGQeaTOShpH6tb+Ui/JPBw6Fl+VawYbuKV21+E=
|
||||||
|
github.com/grafana/grafana-aws-sdk v0.18.0/go.mod h1:rCXLYoMpPqF90U7XqgVJ1HIAopFVF0bB3SXBVEJIm3I=
|
||||||
github.com/grafana/grafana-azure-sdk-go v1.7.0 h1:2EAPwNl/qsDMHwKjlzaHif+H+bHcF1W7sM8/jAcxVcI=
|
github.com/grafana/grafana-azure-sdk-go v1.7.0 h1:2EAPwNl/qsDMHwKjlzaHif+H+bHcF1W7sM8/jAcxVcI=
|
||||||
github.com/grafana/grafana-azure-sdk-go v1.7.0/go.mod h1:X4PdEQIYgHfn0KTa2ZTKvufhNz6jbCEKUQPZIlcyOGw=
|
github.com/grafana/grafana-azure-sdk-go v1.7.0/go.mod h1:X4PdEQIYgHfn0KTa2ZTKvufhNz6jbCEKUQPZIlcyOGw=
|
||||||
github.com/grafana/grafana-google-sdk-go v0.1.0 h1:LKGY8z2DSxKjYfr2flZsWgTRTZ6HGQbTqewE3JvRaNA=
|
github.com/grafana/grafana-google-sdk-go v0.1.0 h1:LKGY8z2DSxKjYfr2flZsWgTRTZ6HGQbTqewE3JvRaNA=
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ type Cfg struct {
|
|||||||
// AWS Plugin Auth
|
// AWS Plugin Auth
|
||||||
AWSAllowedAuthProviders []string
|
AWSAllowedAuthProviders []string
|
||||||
AWSAssumeRoleEnabled bool
|
AWSAssumeRoleEnabled bool
|
||||||
|
AWSExternalId string
|
||||||
|
|
||||||
// Azure Cloud settings
|
// Azure Cloud settings
|
||||||
Azure *azsettings.AzureSettings
|
Azure *azsettings.AzureSettings
|
||||||
@@ -46,7 +47,7 @@ type Cfg struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func NewCfg(devMode bool, pluginsPath string, pluginSettings setting.PluginSettings, pluginsAllowUnsigned []string,
|
func NewCfg(devMode bool, pluginsPath string, pluginSettings setting.PluginSettings, pluginsAllowUnsigned []string,
|
||||||
awsAllowedAuthProviders []string, awsAssumeRoleEnabled bool, azure *azsettings.AzureSettings, secureSocksDSProxy setting.SecureSocksDSProxySettings,
|
awsAllowedAuthProviders []string, awsAssumeRoleEnabled bool, awsExternalId string, azure *azsettings.AzureSettings, secureSocksDSProxy setting.SecureSocksDSProxySettings,
|
||||||
grafanaVersion string, logDatasourceRequests bool, pluginsCDNURLTemplate string, appURL string, tracing Tracing, features plugins.FeatureToggles, angularSupportEnabled bool,
|
grafanaVersion string, logDatasourceRequests bool, pluginsCDNURLTemplate string, appURL string, tracing Tracing, features plugins.FeatureToggles, angularSupportEnabled bool,
|
||||||
grafanaComURL string) *Cfg {
|
grafanaComURL string) *Cfg {
|
||||||
return &Cfg{
|
return &Cfg{
|
||||||
@@ -58,6 +59,7 @@ func NewCfg(devMode bool, pluginsPath string, pluginSettings setting.PluginSetti
|
|||||||
PluginsAllowUnsigned: pluginsAllowUnsigned,
|
PluginsAllowUnsigned: pluginsAllowUnsigned,
|
||||||
AWSAllowedAuthProviders: awsAllowedAuthProviders,
|
AWSAllowedAuthProviders: awsAllowedAuthProviders,
|
||||||
AWSAssumeRoleEnabled: awsAssumeRoleEnabled,
|
AWSAssumeRoleEnabled: awsAssumeRoleEnabled,
|
||||||
|
AWSExternalId: awsExternalId,
|
||||||
Azure: azure,
|
Azure: azure,
|
||||||
ProxySettings: secureSocksDSProxy,
|
ProxySettings: secureSocksDSProxy,
|
||||||
LogDatasourceRequests: logDatasourceRequests,
|
LogDatasourceRequests: logDatasourceRequests,
|
||||||
|
|||||||
@@ -92,6 +92,9 @@ func (s *Service) awsEnvVars() []string {
|
|||||||
if len(s.cfg.AWSAllowedAuthProviders) > 0 {
|
if len(s.cfg.AWSAllowedAuthProviders) > 0 {
|
||||||
variables = append(variables, awsds.AllowedAuthProvidersEnvVarKeyName+"="+strings.Join(s.cfg.AWSAllowedAuthProviders, ","))
|
variables = append(variables, awsds.AllowedAuthProvidersEnvVarKeyName+"="+strings.Join(s.cfg.AWSAllowedAuthProviders, ","))
|
||||||
}
|
}
|
||||||
|
if s.cfg.AWSExternalId != "" {
|
||||||
|
variables = append(variables, awsds.GrafanaAssumeRoleExternalIdKeyName+"="+s.cfg.AWSExternalId)
|
||||||
|
}
|
||||||
|
|
||||||
return variables
|
return variables
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -337,3 +337,17 @@ func TestInitializer_oauthEnvVars(t *testing.T) {
|
|||||||
assert.Equal(t, "GF_PLUGIN_APP_PRIVATE_KEY=privatePem", envVars[4])
|
assert.Equal(t, "GF_PLUGIN_APP_PRIVATE_KEY=privatePem", envVars[4])
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestInitalizer_awsEnvVars(t *testing.T) {
|
||||||
|
t.Run("backend datasource with aws settings", func(t *testing.T) {
|
||||||
|
p := &plugins.Plugin{}
|
||||||
|
envVarsProvider := NewProvider(&config.Cfg{
|
||||||
|
AWSAssumeRoleEnabled: true,
|
||||||
|
AWSAllowedAuthProviders: []string{"grafana_assume_role", "keys"},
|
||||||
|
AWSExternalId: "mock_external_id",
|
||||||
|
}, nil)
|
||||||
|
envVars, err := envVarsProvider.Get(context.Background(), p)
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.ElementsMatch(t, []string{"GF_VERSION=", "AWS_AUTH_AssumeRoleEnabled=true", "AWS_AUTH_AllowedAuthProviders=grafana_assume_role,keys", "AWS_AUTH_EXTERNAL_ID=mock_external_id"}, envVars)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ func ProvideConfig(settingProvider setting.Provider, grafanaCfg *setting.Cfg, fe
|
|||||||
allowedUnsigned,
|
allowedUnsigned,
|
||||||
allowedAuth,
|
allowedAuth,
|
||||||
aws.KeyValue("assume_role_enabled").MustBool(grafanaCfg.AWSAssumeRoleEnabled),
|
aws.KeyValue("assume_role_enabled").MustBool(grafanaCfg.AWSAssumeRoleEnabled),
|
||||||
|
aws.KeyValue("external_id").Value(),
|
||||||
grafanaCfg.Azure,
|
grafanaCfg.Azure,
|
||||||
grafanaCfg.SecureSocksDSProxy,
|
grafanaCfg.SecureSocksDSProxy,
|
||||||
grafanaCfg.BuildVersion,
|
grafanaCfg.BuildVersion,
|
||||||
|
|||||||
@@ -289,6 +289,7 @@ type Cfg struct {
|
|||||||
AWSAllowedAuthProviders []string
|
AWSAllowedAuthProviders []string
|
||||||
AWSAssumeRoleEnabled bool
|
AWSAssumeRoleEnabled bool
|
||||||
AWSListMetricsPageLimit int
|
AWSListMetricsPageLimit int
|
||||||
|
AWSExternalId string
|
||||||
|
|
||||||
// Azure Cloud settings
|
// Azure Cloud settings
|
||||||
Azure *azsettings.AzureSettings
|
Azure *azsettings.AzureSettings
|
||||||
@@ -1300,6 +1301,11 @@ func (cfg *Cfg) handleAWSConfig() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
cfg.Logger.Error(fmt.Sprintf("could not set environment variable '%s'", awsds.AllowedAuthProvidersEnvVarKeyName), err)
|
cfg.Logger.Error(fmt.Sprintf("could not set environment variable '%s'", awsds.AllowedAuthProvidersEnvVarKeyName), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cfg.AWSExternalId = awsPluginSec.Key("external_id").Value()
|
||||||
|
if err != nil {
|
||||||
|
cfg.Logger.Error(fmt.Sprintf("could not set environment variable '%s'", awsds.GrafanaAssumeRoleExternalIdKeyName), err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *Cfg) readSessionConfig() {
|
func (cfg *Cfg) readSessionConfig() {
|
||||||
|
|||||||
Reference in New Issue
Block a user