iam

module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 27, 2021 License: Apache-2.0, BSD-2-Clause, BSD-3-Clause, + 2 more

README

IAM - 身份识别与访问管理系统

IAM = Identity and Access Management

IAM 是一个基于 Go 语言开发的身份识别与访问管理系统,用于对资源访问进行授权。同时也具有如下能力:

  1. 配合极客时间专栏 Go 语言项目开发实战,讲解如何用 Go 做企业级应用的开发,是该项目的理论课程,包含了项目各个知识点和构建思路的讲解,中间也会包含我的一线研发经验和建议。

  2. 作为一个开发脚手架,供开发者克隆后二次开发,快速构建自己的应用。

IAM 项目会长期维护、定期更新,欢迎兄弟们 Star & Contributing

Features

本项目用到了Go企业开发的大部分核心技能点,见下图:

技术思维导图

更多请参考:marmotedu/gocollect

Architecture

IAM架构

架构解析见:IAM 架构 & 能力说明

Getting Started

Prerequisites

Minimum Requirements

  • Hardware
    • 2 GB of Memory
    • 50 GB of Disk Space
  • 操作系统:CentOS Linux 8.2 (64-bit)
  • 正常访问外网

需求检查 & 依赖安装

请参考:

Building
  1. 代码包下载
$ git clone https://github.com/marmotedu/iam
  1. 编译
$ cd iam
$ make
Running
./scripts/install/install.sh iam::install::install_iam    

Using

IAM Documentation

Contributing

欢迎贡献代码,贡献流程可以参考 developer's documentation

Community

You are encouraged to communicate most things via GitHub issues or pull requests.

Authors

为了方便交流,我建了微信群,可以加我微信:marmotedu,我拉你入群,方便交流。

谁在用

如果你有项目在使用iam系统模板,也欢迎联系作者,加入使用案例。

License

IAM is licensed under the MIT. See LICENSE for the full license text.

Directories

Path Synopsis
api
swagger/docs
Package docs IAM API Server API.
Package docs IAM API Server API.
cmd
iam-apiserver
apiserver is the api server for iam-apiserver service.
apiserver is the api server for iam-apiserver service.
iam-authz-server
authzserver is the server for iam-authz-server.
authzserver is the server for iam-authz-server.
iam-pump
pump is iam analytics purger that moves the data generated by your iam-authz-server nodes to any back-end.
pump is iam analytics purger that moves the data generated by your iam-authz-server nodes to any back-end.
iamctl
iamctl is the command line tool for iam platform.
iamctl is the command line tool for iam platform.
examples
internal
apiserver
Package apiserver does all of the work necessary to create a iam APIServer.
Package apiserver does all of the work necessary to create a iam APIServer.
apiserver/api/v1/cache
Package cache defines a cache service which can return all secrets and policies.
Package cache defines a cache service which can return all secrets and policies.
apiserver/api/v1/policy
Package policy implements the policy handlers.
Package policy implements the policy handlers.
apiserver/api/v1/secret
Package secret implements the secret handlers.
Package secret implements the secret handlers.
apiserver/api/v1/user
Package user implements the user handler.
Package user implements the user handler.
apiserver/config
Package config defines configuration for iam-apiserver.
Package config defines configuration for iam-apiserver.
apiserver/options
Package options contains flags and options for initializing an apiserver
Package options contains flags and options for initializing an apiserver
apiserver/service/v1
Package v1 is the place where you can implements more complex business logic.
Package v1 is the place where you can implements more complex business logic.
apiserver/store
Package store defines the storage interface for iam-apiserver.
Package store defines the storage interface for iam-apiserver.
apiserver/store/etcd
Package etcd implements `github.com/marmotedu/iam/internal/apiserver/store.Store` interface.
Package etcd implements `github.com/marmotedu/iam/internal/apiserver/store.Store` interface.
apiserver/store/fake
Package fake implements `github.com/marmotedu/iam/internal/apiserver/store.Store` interface.
Package fake implements `github.com/marmotedu/iam/internal/apiserver/store.Store` interface.
apiserver/store/mysql
Package mysql implements `github.com/marmotedu/iam/internal/apiserver/store.Store` interface.
Package mysql implements `github.com/marmotedu/iam/internal/apiserver/store.Store` interface.
authzserver
Package authzserver does all of the work necessary to create a authzserver
Package authzserver does all of the work necessary to create a authzserver
authzserver/analytics
Package analytics defines functions and structs used to store authorization audit data to redis.
Package analytics defines functions and structs used to store authorization audit data to redis.
authzserver/api/v1/authorize
Package authorize implements the authorize handlers.
Package authorize implements the authorize handlers.
authzserver/authorization
Package authorization implement the authorize interface that use local repository to authorize the subject access review.
Package authorization implement the authorize interface that use local repository to authorize the subject access review.
authzserver/authorization/authorizer
Package authorizer defines authorization interface.
Package authorizer defines authorization interface.
authzserver/config
Package config defines iam-authz-server configuration.
Package config defines iam-authz-server configuration.
authzserver/options
Package options contains flags and options for initializing an apiserver
Package options contains flags and options for initializing an apiserver
authzserver/store
Package store defines the storage interface for authzserver.
Package store defines the storage interface for authzserver.
authzserver/store/load
Package load loads pump plugins.
Package load loads pump plugins.
iamctl
Package iamctl provides the functions used by the iamctl command line tool under github.com/marmotedu/iam/cmd.
Package iamctl provides the functions used by the iamctl command line tool under github.com/marmotedu/iam/cmd.
iamctl/cmd
Package cmd create a root cobra command and add subcommands to it.
Package cmd create a root cobra command and add subcommands to it.
iamctl/cmd/color
Package color print colors supported by the current terminal.
Package color print colors supported by the current terminal.
iamctl/cmd/completion
Package completion output shell completion code for the specified shell (bash or zsh).
Package completion output shell completion code for the specified shell (bash or zsh).
iamctl/cmd/info
Package info print the host information.
Package info print the host information.
iamctl/cmd/jwt
Package jwt can be used to sign/show/verify jwt token with given secretID and secretKey.
Package jwt can be used to sign/show/verify jwt token with given secretID and secretKey.
iamctl/cmd/new
Package new used to generate demo command code.
Package new used to generate demo command code.
iamctl/cmd/options
Package options print a list of global command-line options (applies to all commands).
Package options print a list of global command-line options (applies to all commands).
iamctl/cmd/policy
Package policy provides functions to manage authorization policies on iam platform.
Package policy provides functions to manage authorization policies on iam platform.
iamctl/cmd/secret
Package secret provides functions to manage secrets on iam platform.
Package secret provides functions to manage secrets on iam platform.
iamctl/cmd/set
Package set used to set specific features on objects.
Package set used to set specific features on objects.
iamctl/cmd/user
Package user provides functions to manage users on iam platform.
Package user provides functions to manage users on iam platform.
iamctl/cmd/validate
Package validate validate the basic environment for iamctl to run.
Package validate validate the basic environment for iamctl to run.
iamctl/cmd/version
Package version print the client and server version information.
Package version print the client and server version information.
iamctl/util/interrupt
Package interrupt deal with signals.
Package interrupt deal with signals.
iamctl/util/templates
Package templates provides template functions for working with templates.
Package templates provides template functions for working with templates.
iamctl/util/term
Package term provides structures and helper functions to work with terminal (state, sizes).
Package term provides structures and helper functions to work with terminal (state, sizes).
pkg/code
Package code defines error codes for iam platform.
Package code defines error codes for iam platform.
pkg/logger
Package logger defines gorm logger
Package logger defines gorm logger
pkg/middleware
Package middleware defines multiple gin middlewares
Package middleware defines multiple gin middlewares
pkg/options
Package options is the public flags and options used by a generic api server.
Package options is the public flags and options used by a generic api server.
pkg/server
Package server defines the generic apiserver used by all iam platform.
Package server defines the generic apiserver used by all iam platform.
pkg/util/gormutil
Package gormutil is a util to convert offset and limit to default values.
Package gormutil is a util to convert offset and limit to default values.
pkg/validation
Package validation defines validate functions internal used by iam.
Package validation defines validate functions internal used by iam.
pump
Package pump does all of the work necessary to create a iam pump server.
Package pump does all of the work necessary to create a iam pump server.
pump/analytics
Package analytics defines all the functions and structs used to store traffic analytics.
Package analytics defines all the functions and structs used to store traffic analytics.
pump/config
Package config defines pump configuration.
Package config defines pump configuration.
pump/options
Package options contains flags and options for initializing an apiserver
Package options contains flags and options for initializing an apiserver
pump/pumps
Package pumps defines multiple back-end service used to persistent store iam analytics data.
Package pumps defines multiple back-end service used to persistent store iam analytics data.
pump/server
Package server runs a http server used to provide a api to check pump health status.
Package server runs a http server used to provide a api to check pump health status.
pump/storage
Package storage defines storages which store the analytics data from iam-authz-server.
Package storage defines storages which store the analytics data from iam-authz-server.
pump/storage/redis
Package redis provides an redis implementation of the AnalyticsStorage storage interface.
Package redis provides an redis implementation of the AnalyticsStorage storage interface.
pkg
app
Package app defines an application framework used to create application.
Package app defines an application framework used to create application.
cli/genericclioptions
Package genericclioptions contains flags which can be added to you command, bound, completed, and produce useful helper functions.
Package genericclioptions contains flags which can be added to you command, bound, completed, and produce useful helper functions.
db
Package db provide useful functions to create mysql instance.
Package db provide useful functions to create mysql instance.
log
shutdown
Package shutdown Providing shutdown callbacks for graceful app shutdown Installation To install run: go get github.com/marmotedu/iam/pkg/shutdown Example - posix signals Graceful shutdown will listen for posix SIGINT and SIGTERM signals.
Package shutdown Providing shutdown callbacks for graceful app shutdown Installation To install run: go get github.com/marmotedu/iam/pkg/shutdown Example - posix signals Graceful shutdown will listen for posix SIGINT and SIGTERM signals.
shutdown/shutdownmanagers/posixsignal
Package posixsignal provides a listener for a posix signal.
Package posixsignal provides a listener for a posix signal.
storage
Package storage defines redis storage.
Package storage defines redis storage.
validator
Package validator defines iam custom binding validators used by gin.
Package validator defines iam custom binding validators used by gin.
test
jwt
third_party
forked/murmur3
Package murmur3 implements Austin Appleby's non-cryptographic MurmurHash3.
Package murmur3 implements Austin Appleby's non-cryptographic MurmurHash3.
tools
codegen
Package main is a tool to automate the creation of code init function.
Package main is a tool to automate the creation of code init function.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL